[Музика Відтворення] [MUSIC - Россіні, "Ranz DES Vaches "ВІД Вільгельм Телль] [MUSIC - англійська Beat "МАРТА Про поворотними головками "] [Оплески і захоплюватися] DAVID мала: Так що це CS50. Мене звати Девід Малан. І 73% з вас не мають досвіду роботи з комп'ютерної науки, Всупереч тому, що ви думаєте. Отже, сьогодні ми думали, що позбуватися від в той незнання, а й дати вам відчуття, для тих з вас з великим комфортом, які напрямки Ви можете піти в цьому семестрі. Отже, давайте почнемо з цього. Я дійсно поняття не маю, що всередині комп'ютер, хоча, як ви, я використовувати його кожен день. Але це свого роду вікно, і є Не багато входи в нього. Як мінімум, є, то які? Ймовірно, шнур живлення. І справді з цим інгредієнтом, електрика, ми, здається, здатні робив досить мало в ці дні. Але врешті-решт, ми вони повинні представляти речі що ми дбаємо про. Ми повинні представляти інформацію У тій чи іншій формі. І ви, мабуть, принаймні, смутно знайомі з ідеєю бінарним або біт, так чи інакше, комп'ютери зводиться до нулів та одиниць. Але чи можемо ми прийняти, що і принаймні покласти трохи світла на це? Тому у мене є ці маленькі настільні лампи тут. У мене є електрична розетка тут. І я збираюся запропонувати, щоб усередині мого комп'ютера, принаймні один з цих речей, щось, здатне бути включений або виключений. У цьому випадку це дійсно настільна лампа, але на більш низькому рівні, це те, називають транзистором. Але в нашому світі, це настільна лампа, так що Я збираюся йти вперед і підключити цей в мою електрики тут. І я стверджую, що за допомогою цієї простої, Простий пристрій, це простий перемикач, я може представляти інформацію. Наприклад, прямо зараз, я що не представляють нічого, вірно? Я уявляю, що я називаю 0 або хибним, протилежне щось насправді присутня. Але якщо я просто включити цей перемикач, тепер я представляв собою 1. Таким чином, використання цієї дуже простий шматок пам'яті, якщо хочете, я можу уявити інформації. Зараз, на жаль, мій комп'ютер не може зробити все, що багато. Це може представляти тільки два значення у всьому світі - 0 або 1. Але те, що очевидне рішення, в даний час, якщо ми хочемо розширити наш комп'ютера пам'яті і являють собою більш не тільки 0 і 1? Ну, давайте захопити ще один такий біт. Давайте захопити ще один перемикач, інший транзистор, однак ви хотіли б думати про це. Дозвольте мені йти вперед і підключити цей У моєму комп'ютері, а також. І я збираюся стверджувати тепер, що за кілька більшого використання електрики і звертаються все більше цих включається і вимкнений, я можу представити кілька таких інформації. Так прямо зараз, це 1. Якщо я хочу, щоб в даний час представляють 2, я міг би це зробити. Але, як правило, конвенції, оскільки ми будемо зрештою побачити, доведеться мені зробити це. Так що це 0, це 1. Це було б 2. І не дивно, що це буде 3. Таким чином, в цьому випадку, тим не менш, може ми розраховуємо ще сильніше? Якщо я отримаю третій біт, третій перемикач, що найбільша кількість Тепер я можу рахувати до від 0? 7 Так, якщо я, починаючи з 0, чи не так? Тому що, якщо я включаю світло на це і насправді підключити цей третій і останній Світло в моїй електричної розетки тут, то у мене є здатність представляти будь-який з двох значень тут, двома значеннями Тут два значення тут - і так я можу уявити 2 рази 2 рази 2 або восьми можливих значень. І якщо я почну обліку на 0, так це 0, 1, 2, 3, 4, 5, 6, 7. Так що це двійковий файл. Це дійсно так просто. І я б стверджувати, що це насправді цілком знайома більшості все в цій кімнаті. Дозвольте мені йти вперед і відкрити маленький текстовий редактор тут. І ви, можливо, пам'ятаєте з початкової школи що у нас були такі речі, як сотні місце, десятки місці, і ті місця. І нагадати, що якщо у вас кілька десяткових число, як щось випадкове як 123, ви, по суті, пишуть, що у формі з цих трьох стовпців. І чому це 1, 2, 3, що ми знаємо, як 123? Ну, в крайньому лівому стовпчику, у нас є один плюс два 100 10s, так що це 120, плюс три 1S, так що це 123. Тепер цей світ, що ми просто освітлена точно так само, як Ви були знайомі з роками, тільки тепер, наші колонки не є ступенями 10. Вони просто ступенями 2. Так що хоча це ті місця, це буде двійок місце, це буде рачки місце. І тому, що я використовую тільки найпростіші механізмів змінити становище на краще і вимикається - електрику тече або електрику не тече - Я не зовсім ті ж виразні діапазоні, від 0 до дев'яти. Ми збираємося тримати це супер просто У цьому світі комп'ютерів. У мене тільки 0 або 1 - або виключений, неправдиву або істинну. І те, що я представляю зараз 1, 1, 1, тому що кожен з цих вогнями світиться. Ну, це дає мені один плюс один 4 2, так це 6, плюс один 1, а це 7. І ERGO робить це послідовність з трьох біти представляють число 7. Таким чином, весь цей час внутрішній стороні комп'ютер, було будь-яку кількість транзисторів, будь-яке число бітів. Але врешті-решт, ми може представляти інформацію так просто, як це. Зараз, на жаль, ми Оновлюється до 7 в CS50 досі, але сподіваюсь, ми можемо зробити трохи краще, ніж це. І дійсно, ми можемо. Припустимо, що ми, як люди просто довільно вирішив, що ми збираємося пов'язати номери типу 1 і 2, 3, 4, 5, 6, 7, з конкретними літерами алфавіту. І з історичних причин, я збираюся почати кілька довільно, але я збираюся сказати, люди, ми збираємося вирішили в якості стандарту, в глобальному масштабі, що 65 являє собою число букви А. 66 буде представляти B. точка, точка, точка. 90 буде представляти букви Z. І давайте припустимо, якщо ми дійсно поставити деякі думки в цьому, ми могли б придумати з номерами для знаків оклику і малі літери, і, дійсно, інші люди зробили це для нас. Так що тепер у нас були биті з якою ми можемо представляти числа, числа, з якими можна представити літерами, а з Листи ми тепер можемо починати створення електронні листи і друковані знаки на екрані. Отже, дозвольте мені запропонувати, якби міг, вісім сміливі добровольці - хто не проти появи не тільки на камеру, але в Інтернеті - прийти сюди і представляють вісім таких бітів, ніж ці три. Так, як один, два? Як щодо трьох? Як щодо чотирьох у світлі синій, п'ять на кінці? Про когось тут? Шість попереду, сім попереду, і вісім попереду, а також. Так що я просто так вийшло, бути готовими з цілою купою листків паперу. І на ці шматочки паперу номери , Які представляють, які стовпці ви, хлопці, будете представляти. Таким чином, ви буде - як тебе звати? СТУДЕНТ: Anna Leah. DAVID мала: Anna Leah, ви стане 128s колонки. Ви? СТУДЕНТ: Кріс. DAVID мала: Кріс бути 64s колонки. Ви? СТУДЕНТ: Дан. DAVID мала: Дан буде бути 32s колонки. СТУДЕНТ: Pramit. DAVID мала: Pramit буде бути 16S колонки. СТУДЕНТ: Ліліан. DAVID мала: Ліліан буде 8s. СТУДЕНТ: Джилл. DAVID мала: Джилл бути 4s колонки. СТУДЕНТ: Марії. DAVID мала: Мері буде 2S, а? СТУДЕНТ: Девід. DAVID мала: Девід буде бути 1S колонки. Так що, якщо ви, хлопці, могли ступити трохи вперед так, що кожен може побачити. Що ви, хлопці, не бачать в тому, що на зворотно з цих листках паперу є маленька шпаргалка, який ось-ось Доручити цих восьми бітам значення підняти руку чи ні підняти руку. Якщо їх рука йде вгору, вони представляють 1. Якщо їх руках залишається на другий рік, вони представляють 0. Між тим, ми повинні бути аудиторію в змозі з'ясувати, на основі цього Відображення, які три літери слова ці Люди збираються викласти. І вже буквально через хвилину, ви збираєтеся прочитав першу лінію від спини шпаргалку, і ви або збирається підняти або підняти руку. Якщо ви 1, ви піднімаєте, якщо ти 0, ви стоїте там ніяково, як і що. Go. Який номер, в першу чергу, ці хлопці представляють? 66. 66, правильно? У нас є 1 у колонці 64s, 1 у стовпці 2s. Це дає мені 66, так що з'являється щоб представляти B. Таким чином, ви, хлопці, написано - Добре, цього достатньо. B. А тепер давайте перейдемо до наше друге лист. Go. Хто найшвидший в математиці тут? Так 79. Знову ж, якщо ми складаємо всі стовпці в яких є один, в даний час тільки як ми робили це раніше з найпростішими прикладів 7, ми тепер отримаємо число 79. Який у відповідності з нашими відображення Лист О. Таким чином, ми вже майже на місці. B, О. І, нарешті, піти. Що вони представляють зараз? Менш консенсусу. Це просто абсолютна шум. Так, це насправді 87. Добре. Отже, якщо нам карту, що ще до - давайте почати називати нашу ASCII графіку, Американський стандартний код для Обміну інформацією. Це дає нам листа - Чи не "Бо", а "лук". І це ідеальний Кий для вас, хлопці, щоб взяти цибулю і голову на спину. Большое спасибо. [Оплески] DAVID мала: ви можете тримати їх. Хоча насправді, комусь як настільну лампу, також? [HOOT Із залу] DAVID мала: Настільна лампа? [Сміється] DAVID мала: Дійсно? Настільні лампи для всіх? Добре. Так, починаючи з найпростішої з принципи, ми тепер не Оновлюється від 0 до всіх, аж до 7 ми Передбачається, що просто, кидаючи більш біт або кілька вогнів або більше транзисторів на цю проблему, ми можемо представляють все більше і більше цифр і ERGO, все більше і більше діапазон алфавітів, як англійська. І так само, давайте приймати на віру на сьогодні Точно так само, що ми могли б почати представляють графіки і відео і будь Ряд інших засобах масової інформації, з якими ми знайомі сьогодні. Так що це CS50, і в цьому класі поруч з вами, знову ж таки, дуже багато однокласників, які так само мало досвід, як ви. І я говорю про це тільки тому, що досить Часто, в тому числі зовсім недавно, в одному з консультування першокурсників подій і в другокурсник минулої весни консультування події, ми часто чуємо, студенти відмовляються від , Коли приходять до столу CS, ну, Я думав про прийняття цього інтро клас, але я не дуже комп'ютерний осіб. Або, але все, звичайно, знає більше, ніж я. І я поставив це у найбільшій шрифт можливо, передати це повідомлення, що це не насправді так. І якщо вам цікаво, якщо Я, насправді, бути тут? Зрозумійте, що це не тільки курси Назва Введення в комп'ютерну Наука, це Введення в комп'ютерну Наук I. Так що дійсно другого такого введення. Значить, ви не, насправді, не в тому місці. І серед цілей у мене є на сьогоднішній день є щоб заспокоїти будь-які такі проблеми, які Ви могли мати, але і розфарбовувати картину того, що в магазині для студенти менше і зручніше так в цьому курсі. Але, по-перше, слова на одному з роздавальних матеріалів у вас є сьогодні, серед яких ряд поширених питань. Це було наше бачення протягом деякого часу Тепер ввести новий класифікації опції в цей курс - а саме, SAT / ненасиченого. Філософськи для мене, це дуже набагато, Набагато важливіше, що студентів у цьому класі взаємодіяти з матеріал, бути оскаржена матеріалу, і турбуватися набагато, набагато менше про механіки оцінки фактичної і літерні оцінки в семестрі кінця, але по-справжньому охопити курсу та його матеріалу. І дійсно це відчуває, більш загально, за те, що цікаво їм, відчуваю оскаржений і винагороджений, але без страху невдачі. І справді, це теж є повторюваною Тема в цьому та інших вступних курси в інших областях, що у вас є цього трепету, коли справа доходить до покласти пальці в одну незнайомих водах. Я сам, ще в 1995 році, був новачком. Я був дуже зосереджений на тому Концентратор Gov тут. І все ж я завжди зросла з невеликим інтересу до інформатики. Мені завжди було цікаво. Але тоді, навіть, у мене був цей страх навіть крокуючи нога в CS50, так багато так що я навіть не магазин це перший рік. І єдина причина, я поставив ногу в Двері року студент-другокурсник, тому що я було дозволено взяти його пройшов / не пройшов. Але навіть пройшов / не пройшов необхідних, що я отримую до нерва, щоб призначити зустріч з професором Kernehan в той час, довести це великий аркуш паперу, і попросити його за його підписом і його дозвіл, щоб дослідити цих незнайомих водах. І це не допомогло в останні роки , Що, коли роблю це у CS50, коли ми Раніше пройшов / не пройшов, так само буде десятків або сотень ваших однокласників повинні придумати, не дай Бог, на Перед Сандерс з такою формою, що в деяких умах представляє нездатність, Я насмілюся сказати, для виконання знаходяться на одному рівні ваших колег. Який смішний, але я думаю, є те, що менталітет. І там ніколи не був у цій культурі з сб / ненасиченого або залік / незалік більш Взагалі, в цьому, звичайно, або дійсно в цьому університетському містечку. Тому цього року ми змінили це. Я б у захваті половини цього класу або більше закінчилися тим, що брав CS50 СБ / ненасиченого. Протягом року, це було б чудово Якщо майже все. Після цього, можливо, ми будемо працювати на літерні в Гарварді Коледж в цілому. Але зараз, ми зробимо це в межах нашої власній сфері, і я сердечно рекомендуємо вам ознайомитися з тим, що часто задаються та задавати питання на свій розсуд, так що сподіваюся, що ви, на відміну від мене, не буде достатньо мати той же фактор страху, коли дослідження того, що, ймовірно, незнайоме місце. Так що ж таке CS50? Це введення в інтелектуальної підприємств комп'ютерних наука і мистецтво програмування. Але що це дійсно означає? Ну, до цих пір, ми говорили дуже коротко про подання інформації. Але припустимо, що ми дійсно хочемо щось зробити з ним. Нам треба ввести поняття що ми будемо називати алгоритмом. Алгоритм процедури процесу набір інструкцій для щось робити. І алгоритм може бути щось супер просто. Так, наприклад, з якою деякі з вас можуть бути знайомі це річ тут. Тож цю книгу тут, стає все більш датовані, але колись давно, вона містяться цілому багато імен і номери телефонів. І дійсно, якби я хотів, щоб знайти хтось у цій телефонній книзі - кажуть, хтось на ім'я Майк Сміт - Я міг би знайти Майк Сміт у будь-якій кількості досить простих способів. Я міг би почати з самого початку і перейти на сторінку 1, не було. Сторінка 2, не було. Page 3. Це алгоритм, є те, що процес, правильно? Так правильно, чи не так? Я начебто ідіота робити це в саме таким чином, але врешті-решт я буду знайти прізвище S, і, сподіваюся, Майк знаходиться в цій секції, і я стану зробив з моїм алгоритмом. Але, звичайно, це не інтуїтивно. Майже кожна розсудлива людина в цій номер не буде цього робити. Що б ви зробили? Ти б пішов прямо до середини, чи не так? Приблизно до середини. І ти розумієш, про, це г-жа Так Майк Сміт, який є прізвище Сміт, Не ясно, то в Ліва половина книги. Він повинен бути в бік S знаходиться в правильному. І в цей момент, хоча більшість з нас не робіть цього насправді, ми можемо буквально розірвати цю проблему в два рази. [ВІТАННЯ І оплески] DAVID мала: Спасибо. [ВІТАННЯ І оплески] DAVID мала: Ви можете буквально розірвати цю Проблема в два рази, залишивши мене з, буквально, проблема вдвічі менше. Так що, якщо це була телефонна книга - і це ймовірно, було - близько 1000 сторінок, зараз це всього лише 500. Якщо я зроблю це знову, і я розумію, про, Блін, я зайшов занадто далеко, я в МС розділ, я можу аналогічно - образно або буквально - копіювати телефонну книгу - це було насправді набагато легше цей час. Я можу буквально копіювати телефонну книгу навпіл, залишивши мене тепер з НЕ 1000, а не 500 - 250 сторінок. І я можу піти 125, і половина з цього, і половину цього, і половину цього, поки, нарешті, я не залишитеся з тільки таку сторінку. [Сміється] DAVID мала: Це частину я не далі. Однією сторінці, на якій Майк, ми сподіваємося, є. Тепер ці різні алгоритми можуть бути Сортувати нарахованих або оцінювати в різному. Перший з них був дуже лінійний, чи не так? Поверніть сторінки, шукати Майка. Поверніть сторінки, шукати Майка. Це дуже лінійно. Якщо є ще одна сторінка в телефоні Книга, ймовірно, це збирається взяти мене ще одну секунду, ще одна одиниця часу, Однак ми машинного часу. Так що я міг би малювати, як це ця лінія Тут, в якій, як розмір Проблема зростає зліва направо - Телефонна книга отримує меншого до більшого - і часом має намір збільшити на вертикальної осі, тим більше Телефонна книга. Таким N всього лише загальні змінна, яка Комп'ютер вчені використовують для представлення деяке значення, деяке число. Таким N намір збільшити лінійно. Подвоєння розміру телефонної книги, це збирається взяти мене в два рази більше час, швидше за все, знайти Майка. Зараз я міг би бути розумним про це, чи не так? Я отримую нудно швидко. Могли б зробити це по двоє. Так дві сторінки, потім чотири, то шість, то вісім. І я міг би почати літати через нього трохи швидше, хоча і незначного ризику перевищення Майка, але крива НЕ буде все, що відрізняється. Він як і раніше буде представляти собою пряму лінії, але трохи швидше. Але що ж мені робити? Я дійсно зробив щось принципово краще. Я досяг того, що ми назвемо логарифмічною час, журнал N, причому ця зелена Лінія має багато, багато, багато чого менш прямі краю до нього. І, швидше, вона пропонує, а він ніби як прагне до нескінченності дуже поступово, , Що я можу насправді взяти 1000-сторінки телефонній книзі, його розмір подвоїться в наступному році - тому припустимо багато більше людей переїхати в місто. Так що тепер у мене є 2000 сторінок, але як багато інших кроків у тому, що розумніші Алгоритм займе? Тільки один. Я маю на увазі, це сильна річ. Якщо ми підемо в 4000 сторінок в наступному році, що збирається взяти мене тільки ще два кроки. Таким чином, ви можете кинути все більше і більше проблеми у мене, а не на відміну від веб- кидати все більшими проблемами Кожен день в Googles і Facebooks з світі, і це не така велика справа. Тому що я покласти більше думки і турботи в мій алгоритм, з яким вирішити проблеми ефективно. І справді, що буде одним з Цілі цього курсу. Ви будете, по шляху, навчитися програмувати. Ви дізнаєтеся, як програмувати на будь-яку кількість мов. Але в кінці дня, курс про вирішення проблем і отримання краще на вирішення проблем, - і, як і в подібних випадках, рішення проблем більш ефективно. Зараз до цих пір, ми зробили це досить інтуїтивно. Введемо щось досить загальний псевдокоді називається. Так що ми в кінцевому підсумку отримати, У цьому звичайно, різних мовах програмування. Але сьогодні ми зробимо це англійською мовою, як синтаксис, де ви тільки почасти говорять те, що ви маєте на увазі, але ви завжди такі коротким і не турбуватися про граматику і повних пропозицій. Ви просто виразити себе, як стисло, наскільки це можливо. Так псевдокод-англійськи, як синтаксис, який представляє мови програмування. І в цьому напрямку, дозвольте мені запропонувати, що ми тепер моделювати процес ми просто описані підрахунку щось трохи інакше, на цей раз бере подивіться на цю п'ятихвилинну відео виробництва наші друзі на Теда, що визначає, що псевдокод, визначає, які є алгоритмічне мислення, і навіть при тому, що наприклад, ви зараз побачите Тобто, в себе, супер просто, це збирається почати, щоб дати нам психічного модель, словник, з яким зробити багато, набагато складніші Алгоритми досить швидко. [Початковий відеовідтворення] [Музика Відтворення] Оповідач: Що таке алгоритм? В області комп'ютерних наук, алгоритм набір інструкцій для вирішення деяких проблеми крок за кроком. Як правило, алгоритми виконуються на комп'ютерах, але ми, люди, алгоритмів, а також. Наприклад, як би ви про підрахунок числа людей у ​​кімнаті? Ну, якщо ви схожі на мене, ви, ймовірно, точка у кожної людини, по одному один раз, і підрахуйте від 0. 1, 2, 3, 4, і так далі. Ну, це алгоритм. Справді, давайте спробуємо висловити це трохи більш формально в псевдокоді - Англійська-подібний синтаксис, який нагадує мови програмування. Нехай N рівні 0. Для кожної людини в кімнаті, встановіть N дорівнює N плюс 1. Як інтерпретувати це псевдокод? Ну, одну лінію заявляє, так би мовити, змінна з ім'ям N і ініціалізує його значення рівним 0. Це просто означає, що на початку наш алгоритм, річ, з якою ми розраховуємо має значення 0. Адже раніше ми починаємо вважати, Ми не порахували ще нічого. Виклик цієї змінної N це всього лише умовність. Я міг би назвати її чим завгодно. Тепер дві лінії demarks початку петлі, послідовність кроків, які будуть повторювати деяке число разів. Таким чином, у нашому прикладі, крок ми беремо розраховує чоловік у кімнаті. Під лінією є лінія два три, яка описує, як саме ми підемо про підрахунок. Відступи припускає, що це три лінії, що буду повторюватися. Так що псевдокод кажу, що після того, починаючи з 0, для кожного людина в номері, ми збільшити N на 1. Зараз цей алгоритм правильно? Ну, давайте стукати його небагато. Це працює, якщо є дві людини в кімнаті? Давайте подивимося. Відповідно одному ми инициализируем N до 0. Для кожного з цих двох людей ми потім збільшити N на 1. Так в першій поїздці через петлі, ми оновлюємо N від 0 до 1. У другій поїздці через цю ж петлі, ми оновлюємо N від 1 до 2. І ось до кінця цього алгоритму, N 2, який дійсно відповідає числу людей у ​​кімнаті. Поки все йде добре. Як щодо прикордонний випадок, правда? Припустимо, що є 0 людей в кімнаті - крім мене, хто робить підрахунок. Відповідно одному ми инициализируем N до 0. На цей раз, однак, три лiнiї не виконати на всіх, так як немає чоловік у кімнаті. І так N залишається рівним 0, що відповідає Кількість осіб в кімнаті. Досить просто, чи не так? Але підрахунок людей по одному досить неефективно, теж немає? Звичайно, ми можемо зробити краще. Чому б не вважати двох чоловік за один раз? Замість підрахунку 1, 2, 3, 4, 5, 6, 7, 8, і так далі, то чому б не розраховувати, 2, 4, 6, 8, і так далі? Це навіть звучить швидше, і вона, безумовно, є. Висловимо цю оптимізацію в псевдокоді. Нехай N рівні 0. Для кожної пари людина в номері, встановлений рівним N N плюс 2. Досить проста зміна, чи не так? Замість того, щоб вважати людей одного в той час, ми замість цього розраховувати їх по два за раз. Даного алгоритму таким чином, в два рази так само швидко, як і попередні. Але хіба це правильно? Давайте подивимося. Це працює, якщо є дві людини в кімнаті? Відповідно одному ми инициализируем N до 0. З цієї однієї пари людей, ми потім збільшити N на два. І ось до кінця цього алгоритму, N 2, який дійсно відповідає числу людей у ​​кімнаті. Припустимо тепер, що існує 0 людей в кімнаті. Відповідно одному ми инициализируем N до 0. Як і колись, три лінії не виконує взагалі, так як немає ніяких пар людей у ​​кімнаті. І т. п. залишається 0, що дійсно збігається з числом людей у ​​кімнаті. Але що, якщо є три людей у ​​кімнаті? Як працює цей алгоритм тариф? Давайте подивимося. Відповідно одному ми инициализируем N до 0. Для пари з тих людей, ми потім збільшити N на 2. Але що потім? Існує не інший повний пара людей в кімнаті, тому ніколи не дві лінії більше не застосовується. І ось до кінця цього алгоритму, N 2 як і раніше, що не відповідає дійсності. Дійсно, цей алгоритм, як кажуть, помилку, так як вона має помилку. Дозволяє відшкодування з деякими новими псевдокод. Нехай п рівним 0 для кожної пари чоловік в номері. Замість N дорівнює N плюс 2. Якщо одна людина залишається непарним, встановлений рівним N N плюс 1. Для вирішення цієї конкретної проблеми, у нас введені відповідно чотири, стані, інакше відомий як філія , Що виконується тільки, якщо є один людина, що ми не могли пару з іншим. І ось тепер, чи є один або три чи будь-яке непарне число людей у кімнату, цей алгоритм Тепер порахувати. Чи можемо ми зробити ще краще? Ну, ми могли розраховувати в 3s або 4s або навіть 5S і 10 с, але крім того, це збирається отримати трохи Важко точки. Зрештою, чи виконані комп'ютерами або людей, Алгоритми просто набір інструкцій з який для вирішення проблем. Вони були тільки три. Яку проблему ви б вирішити з алгоритмом? [КІНЕЦЬ відеовідтворення] DAVID мала: Це єдиний раз, Я буду з'являтися до формі мультфільму. Але там, де ця історія закінчується, Тепер, як ми можемо зробити краще? Трійки і четвірки, ми стверджуємо, що ми можемо розраховувати люди набагато швидше, але ми можемо зробити принципово краще, ніж це? І тримаю парі, ми можемо. Якщо ввести трохи нашого власного псевдокод тут, я збираюся запропонувати що ми можемо досягти такий рядок. Ми не збираємося вважати людей один, два, три, чотири. Ми не збираємося йти два, чотири, шість, вісім. Ми збираємося зробити принципово краще шляхом переосмислення проблеми, і в цьому випадку, використовуючи в іншому випадку недостатній мірі використовуються. Через хвилину, я сподіваюся, ви вибачте і гумору нам, стоячи в місці, і в цей момент ми збираємося прошу кожного з вас взяти на себе у вашому уми номер 1. Ти то при переході на більш ніяково, як час проходить, знайти хтось ще, хто стоїть, об'єднайте ваші номери разом шляхом додавання їх. Один з вас потім збирається брати участь в гонці, щоб сидіти вниз першою, і інша людина збирається повторити. Отже, іншими словами, шляхом посіву всі Ви з номером 1, а потім комбінуванні 1S в 2s і 2s тих, в 4s, з усіма все більш сідаючи, ми повинні, врешті цей алгоритм, є тільки один кредит душа, яка не сідав, але досить швидко , Який має всього кількості аудиторій в своєму розумі. Так що якщо ви, давайте йти вперед і - Крок перший - встати на місце. І виконати. [Натовп нарікання] DAVID мала: Ви знаєте, де Лорен? 729? [Натовп нарікання] DAVID мала: Все в порядку? [Натовп нарікання] DAVID мала: Добре, ми повинні бути підходить до кінця. Ми бачимо, один хлопець стояв тут до сих пір. Хто ще має бути в парі? Якщо ви, хлопці, хочете на пари. Хтось нагорі. Чому б мені не протягнути руку тут. Для дуже небагатьох людей, які до цих пір стоячи, які цифри ви в своєму розумі? СТУДЕНТ: 78. DAVID мала: 78 плюс - хто стоїть тут? СТУДЕНТ: 39. DAVID мала: Плюс 39. Плюс, хто ще досі стоїть? 81? Добре, хто ж ще? Інший 81? Нічого собі. І тоді те, що в спину? СТУДЕНТ: 49. DAVID мала: 49, плюс? СТУДЕНТ: 98. DAVID мала: плюс 98? Те, що хтось ще? 12? Хороша робота. [Сміється] DAVID мала: О, 112 - ой. Хороша робота! [Сміється] [Оплески] DAVID мала: Будь-який інший ще стоїть? Пробачте? СТУДЕНТ: 99. DAVID мала: 99. Будь-який інший ще стоїть? І загальне число студентів тут насправді, відповідно до - чи є у вас номер? О, фактичне число людей у кімнату, відповідно до облікового запису, яка вчення товариші робили на шляху кожного в, було 729. Так з кімнату, повну студентів Гарварду які вважали себе, відповідь 637. [Сміється] DAVID мала: так близько. Але все ж. ОК, так що це навчання момент, чи не так? Це зараз те, що ми описуємо як помилку. Десь по дорозі, ми зробили деякі арифметичні неправильно, або хтось сів, або вліво, або щось пішло не так. Але це нормально. Тому що навіть до цих пір, ми отримав досить близько. І я б стверджувати, що ми дісталися до неправильного відповісти набагато швидше, ніж я мав би за допомогою мого більш лінійний підхід. Отже, давайте припустимо, що ми й справді отримати, що правильно, але думаю, що зараз про те, що відбувається кожного разу, порівняно з моїм власні наївні вказуючи алгоритму. Один, два, три. Якщо насправді є 729 або 637 осіб ось, що взяв би мене буквально 637 або 729 цифрові значення шкали з пальця і приростом мого загальної кількості. І я міг би зробити трохи краще збирається два, чотири, шість, вісім, а вдвічі більше, ніж швидкість, може бути, навіть трьох-або Чотиримісний, залежно, як добре я можу робити, що підрахунок в моїй голові. Але такий підхід, що ви, хлопці, взяли була принципово інша. Так як на початку, всі ви встали. Таким чином, всі 729. А потім буквально половину з вас сіл. А після того, інший половина з вас сіл. А після того, інший половина з вас сіл. А загальна кількість разів, яке ви хлопці, могли б сіли приблизно вісім або дев'ять або десять разів загальна, залежно від того, що наш загальний лічильник. І ми можемо сортувати, робити це в інший бік. Якби ми мали 1024 осіб у кімнаті, загальна кількість разів, ви могли б вдвічі скоротити 1024 чоловік 10. Тепер подумайте про це в іншому напрямку. Припустимо, смішно, що у нас було, скажімо, чотири мільярди людей у ​​цій кімнаті, або номер трохи більшого розміру. Скільки разів ми пішли через цей алгоритм такий, що половина цього класу сідає? Це тільки збирається взяти 32 таких операції, навіть у класі розмір чотири мільярди. Чому? Тому що чотири мільярди йде на два млрд, йде до одного мільйона, йде на 500000000, йде до 250 млн., точка, точка, точка. Я можу тільки зробити це поділ приблизно 32 раз, і в цей момент всі, крім одна людина залишиться стояти. І це теж є свого роду потужний Ідея, що все частіше ми постараємося важелів в цьому, звичайно, і в програмування та інформатики більше Як правило, ці паростки ідею з які ми можемо вирішувати проблеми багато, набагато більш потужно. Отже, ми почали досить простий, що з псевдокод і хлопець у кімнаті, але Тепер з цілою кімнаті, повній людей ми зробили принципово краще. Ну, давайте тепер перехід від псевдокод деяким фактичним кодом. Це мова, який ви збираєтеся, щоб відбулося називатися JavaScript і Ми повернемося до цього напрямку кінці семестру. Це мова програмування, який використовувати, щоб зробити веб-сайти та інші подібні програмного забезпечення в ці дні. І ми використовували його, завдяки другові наша в Стенфордському університеті, для кодування деякі приховані інформацію тут. Це мистецтво стеганографії, так сказати, де можна сховатися інформації в тому, що в іншому випадку представляється бути шум або зовсім інший зображення в цілому. Але, вбудованого в дане конкретне зображення дійсно таємне послання сортів. Отже, дозвольте мені йти вперед і підтягнути і те ж зображення тут, це час у веб-браузері. І я збираюся махнути рукою на деякі з докладно на сьогоднішній день, зокрема Для тих з вас, хто це виглядає як не тільки JavaScript, але грецькі, а абсолютно незнайомої мови. Але цей приклад мови програмування. І на даний момент, прийняти на віру, що це перший рядок коду - і код, я просто означає тексту. Текст, який я міг би буквально набрані у форматі Microsoft Word, якщо у мене було Право програмне забезпечення, щоб потім щось з ним зробити. Ісходников програм, програмування коду, насправді просто текст, і це виглядає інакше засновані на якій мові Ви використовуєте, не в відміну від англійської та Іспанська та російська всі виглядають по-різному по мірі їх набору на клавіатурі. Таким чином, це перший рядок, на даний момент взяти на себе віри, просто відкриває графіки з Інтернет, що галасливі графічні ми тільки що бачили. У наступному рядку тут наведено приклад петлю, і ми фактично побачили, що ж жаргон у відео TED. Петля є те, що трапиться ще раз і знову, і навіть якщо це Абсолютно виглядає загадковим, з ключове слово, а деякі дужки і деякі коми. Ми повернемося до цього незабаром, але це петля там по суті є повідомляючи програмі, перебору всіх з тих галасливих точок, ліворуч направо, зверху вниз. Тому що в кінці дня, зображення подобається це - і ви можете фактично почасти бачити його на цьому проекторі - насправді просто сітку з точок. Так ми можемо визначити кожну з цих точок по координаті х, у, і з цією програми, в даний час ми можемо почати щось зробити, щоб ці точки. Так що я збираюся йти вперед тут і роблю, я збираюся внести деякі зміни. Спочатку я збираюся йти вперед і позбутися всього цього зеленувато та блакитно шум, і я збираюся йти вперед і введіть наступні Правда загадковим синтаксисом. їм для зображення. набір синій за місцем знаходження х, кома, розташування у, рівним 0. Іншими словами, я хочу просто вимкнути все синім крапки в цій картині. Я збираюся йти вперед зараз і перейдіть Виконати цю кнопку Зберегти /, і Ви будете помітили на правій стороні, отримане зображення. Тепер його супер зелений, але це не дивно, тому що я буквально виявився вимкнений, зробивши 1 0 всі синій в цій картині. Ну, а тепер давайте зробимо це трохи більше. їм для зображення, точка setGreen, х, у. І це просто означає ітерацію ліворуч направо і зверху вниз. Вимкни зі значенням 0, а також. Зберегти. І на проекторі, ви не можете насправді дійсно нічого видно не було. На екрані мого ноутбука, якщо я заглядаю всього правильний шлях, я бачу трохи зображення, тому що вони як і раніше деякі червоні там. Якщо ви коли-небудь чули акронім RGB - червоний, зелений, синій - він має на увазі ця композиція із зображення за допомогою тільки тих трьох кольорів. І прямо зараз, ми викинули все зелене, все синє, але існує не так багато червоного кольору. Отже, дозвольте мені вичавити максимум червоним. Як я можу це зробити? Ну, по-перше, я хочу попросити ця програма питання. Я збираюся йти вперед і назвемо його змінної, як в алгебрі. У вас може бути Х або Y або Z. Я збираюся оголосити змінну і сказати, покласти в цю змінну, тимчасово, значення зображення getRed значення при х, у. І знову, ми повернемося до все цієї деталі в майбутньому. Але на сьогоднішній день, просто взяти на віру, що ця лінія просять програми, що це значення червоного на х, у? Саме в це точка? Тоді я збираюся зробити щось до нього. Тоді я збираюся зробити точкове зображення набір червоний на х, у, у, але на цей раз я збираюся підвищити його, роблячи червоним рази, скажімо, 10. Так що збільшити його в 10 разів. Дозвольте мені тепер зменшити масштаб і натисніть могли Виконати / Зберегти. І вуаля, яка була там всього час, навіть якщо наші людські очі не міг побачити його. Отже, ще раз, це зараз є реальним кодом, приклад мови, що ми приїдемо Повернутися до незабаром. Але зрозумійте, зокрема тих з вас, з такого досвіду немає, це досить скоро, що ми самі буде написання коду подобається, що є. Справді, інструмент, з яким ви всі трохи знайомі, мабуть, CS50 учасника власний курс-торговий інструмент, який був насправді перезавантаження цього літа деякі CS50 з власних колишніх студентів, тепер TFS. Так що це, виявляється, сайт побудований на мові, званому PHP. Він використовує базу даних з ім'ям MySQL, речі , З яким ми отримаємо в свої руки брудні пізніше на семестр. Але вірити цьому чи ні, навіть щось як це в кінцевому підсумку зводиться до найпростіших петель і умови і філії, як і ті, які ми бачили тільки Хвилину тому у відео TED. Те, що я думав, що я зараз зробити, це частка НЕ просто те, що ми зробили персоналу для кампуса, а щось колишній студент - три студентів, насправді - зробили це в минулому році, Сьєрра, Данило і Сем, останній з яких раніше не мали Досвід програмування коли він узяв CS50. І для їх остаточного проекту, вони виставлені на ярмарку CS50, додаток під назвою wrdly, яка є веб-програми, для якої вони зроблені це відео, що я думав, що я розділю на дати вам відчуття тільки те, що можливо до кінця терміну. [Музика Відтворення] DAVID мала: Це від нульової тижня Тиждень до 12 в минулому році. [Оплески] DAVID мала: як тизер, також, дійсно щоб підігріти апетит до того, що можливо, ви, можливо, бачили вже, або може незабаром побачимо, market.cs50.net, новий інструмент, який команда курсу має працюєте, на цей раз в Студент співпраці з Гарвардської Установи, такі, що починаючи з цього року і продовження, сподіваюся в цей найближчим літом ви будете мати стандартну можливість на території кампуса, щоб купити і продати речі, що представляють інтерес для вас. І з HSA партнерства шляхом, ви Також зможете відмовитися пунктів від в одному з фізичних магазинах HSA в деякий момент у майбутньому, з тим щоб проксі речей, зокрема, як ви випускник і не обов'язково хочуть відмовитися від речей, але насправді платити направити людей, які можуть слідувати за вами Тут на території кампуса. Так про це в майбутньому. Але трохи більш конкретно, інструмент який виходить з CS50 в останні років, з яким деякі з вас могли б бути знайомі та інші ви можете бути вдаючись до допомоги зараз, в CS50.net/2x, ви будете знайти посилання на розширення Chrome які демонстративно, як ви можете використовувати JavaScript, той же самий мову, який ми використані з Ейфелевою вежею хвилину тому, для реалізації 2x швидкості відтворення для всіх Гарвардський iSites відео. Це те, що побудований у власний відеоплеєр CS50 автора. Але і це теж, якщо ви починаєте копатися у вихідний код, який ми щасливо зробити доступним, ви побачите, як Ви можете навіть вирішити такі проблеми, як, що, прискорення віджетів у веб-сайти з які ви вже добре знайомі. Так що тепер слово на хід і очікування і що чекає попереду. Загалом, ми дійсно збираємося тут по понеділках і середах - хоча в цю п'ятницю, ми зібралися тому, шопінгу тиждень - 1:00 до 2:00 вечора, хоча Чи не іноді до 2:30. Враховуючи, що Отже, ви, або доведеться прийняти деякі клас в 2:00 вечора вперед, або навіть раніше, розумієш, Курс підтримує те, що називається одночасна реєстрація, якою ми будемо підтримують петицію та Дошка оголошень ваші резиденти деканів від вашого імені, якщо у вас конфлікт десь у цьому 1:00 до 2:30 діапазоні. Голова до URL, що онлайн додаткової інформації. Але з точки зору опорної конструкції , Що характеризує CS50, для студентів більш і менш зручні, так, ми пропонують різні треки розділах. І це пару тижнів відпустки, але Найближчим часом, вам буде запропоновано, щоб ваш рівень комфорту. Ви серед тих, менше знайомі, більш комфортною, або десь посередині? І ми будемо мати три різних треків, які обслуговують саме ті аудиторії. Так що ні в який момент цей термін набув ви навіть відчуваєте, як ви збираєтеся перемогти проти будь-який студент з більш або менш тлі, ніж ви. Дійсно, курс призначений для набагато більше спільних і багато більш відкритою, ніж це. З точки зору проблеми набори, ви знайти також, що на додаток до стандартна редакція проблеми щотижня встановлений, там часто "хакер Видання ", що означало бути спрямовані на 5% до 10% або близько того демографічні, хто дійсно серед тих, зручнішою і хотів би більше складним завданням, ніж стандартний виданню, що очікує PSET. Більш детальна інформація про тих, які будуть знайти в програмі. Але і там можна знайти подробиці на курсах кінця днів. Зазвичай проблема встановлює обумовлені по четвергах. Тим не менш, ви можете розширити багато хто з ваших терміни цієї осені від четвергах П'ятницях просто зустрічаючи нас на півдорозі, так би мовити, відповівши на кілька розминки питань у деяких проблема тижня набори, який буде автоматично Потім дати вам додаткові 24 годин. Ми також впаде ваша низька Оцінка, відповідно до навчальної програми. Щоб дати вам відчуття того, що проблема Набори - тому що це дійсно Проблема звичайно, встановлює, що в кінцевому рахунку, визначають майже кожен студентський досвід, більше, ніж лекції, більше, ніж розділів, більш , Ніж більшість інших аспект курсу. Торік, наприклад, ми почали, як ми почнемо в цьому році, з нуля. Особливо в цю п'ятницю, ми будемо використовувати, для всього за один день час, графічна мова програмування, з яким ми будемо Початок програмування шляхом перетягування падіння частин головоломки, що тільки зібрати фізично якщо це має сенс щоб зробити це, логічно. Наступного тижня, ми швидко перехід до C, досить старий, але дуже маленький і проста мова, який дозволить нам дійсно йдуть від 0 до 60 протягом всього за кілька тижнів, а потім експреси ті ж навички і знання основні програмні конструкції в мов високого рівня, як PHP, JavaScript, а треті ще. Торік у третьому PSET в ході було те, що криптографія предметно-орієнтовані програми, за допомогою якого ми виклик студентам реалізувати будь кількість шифрів, програмах, з якими дертися або розшифровувати інформацію, зашифрувати його. Для хакер видання, навпаки, ми дали хакер студентів файлу від стандартного комп'ютера Unix містять імена користувачів і паролі, останній з яких були зашифровані, і ми кидали виклик хакера студентів для розшифровки, як могли, ці паролі, все ще на що одному домені. Сутичка, гра з якою деякі з вас, можливо, знайомі. Криміналістиці частина, де ми просимо студентів відновити дані, які були в іншому випадку видалити з моїх власних цифрових Compact Flash камери карті, по насправді написання програмного забезпечення, щоб з'ясувати, де були нулі й одиниці в що цифрова камера, яка раніше складається JPEG графічні? Завдання пологів у минулому році подразумевающие запис найшвидший Орфографічний можливо, конкуруючих з друзями та однокласниками, якщо вони хотіли б. Реалізація N Puff Хафф, програма для стиснення. А потім закінчення семестру з CS50 Фінансів, веб-додаток з яке ви створюєте ETRADE-як веб-сайт купувати і продавати акції, так сказати, справді тягне майже котирування в реальному часі Yahoo! Фінансів. Те, що ми не зробили в минулому році був одна проблема, яка залишається набір Тим не менш улюбленим. Якщо ви ніколи не ходили в shuttle.cs50.net, ви побачите користувачів Інтерфейс трохи як це. Але два роки тому, клас застосовуватися, за допомогою Google Maps і Google Планета Земля плагін і трохи підкованих з водінням по всьому університетському містечку, так що мета цієї гри був, як ви можете побачити деякі з осіб, , Щоб рухатися по всьому університетському містечку шукаєте персоналу, навчання стажистів та центрів сертифікації, і Коли ви робите, поклавши їх на вашому автобусі. Жоден з них насправді, здається, тут, так що ми збираємося ввести чит-код. [Сміється] DAVID мала: Там ми йдемо. Добре. І ось тепер, є персонал пронизаний всьому університетському містечку. І, як ви можете бачити, на правій руці стороні екрану, трансферний автобус є вільні місця. І метою було написати код, за якої для імітації цього водіння і підбираючи і висаджуючи від пасажирів. Той теж з використанням мови називається JavaScript. Так розумію, що подібні програми будуть бути на нашій же траєкторії цього року, а також. З точки зору, в даний час, додаткової підтримки, У нас є офіс годин. Як ви, можливо, бачили у власному будинку обідньому залі або під Анненберг, ми будемо в будинку їдальні залів чотири ночі на тиждень - Леверетт, Pfoho, Еліот і Анненберг цього року, 8:00 вечора до 11:00 вечора. І те, що ми думали, що ми робимо в цьому році щось трохи інше. Якщо ви чули гуркіт минулому році, що це було трохи занадто напружений, це офіс році години, як ми опишемо на наступному тижні, буде більш органічним, якої по прибуттю, ви будете відправлені в одній конкретній таблиці , Коли кілька співробітників чекають, і ми будемо робити те, набагато більш органічно. Немає більше черг, не більше Ipad, але а є більш інтимні розмови навколо столу всього вісім або близько студентів, так що ми приблизний відчути, що в іншому випадку було б набагато меншого класу. Ми пропонуємо, а також, ці речі, які ми називається проходження, відео знято в заздалегідь по одному з викладання курсу молодці, Zamyla, в якому вона проведе вас через проблеми тижня набори, пропонуючи поради і рекомендації для проблеми, які належить вирішити. І навпаки, після того, як проблема набори завдяки, в цьому році ми також випустити маленькі кліпи називають пост-трупів, що насправді ви пройдете через Представник рішень, і хороші і погано, за допомогою якого ви можете укласти, наскільки ви могли б або мають бути реалізовано власне рішення. І те, що ми пропонуємо в перший раз і в цьому році, зокрема, для тих студентів, які користуються курси в інших ресурсів але проте щосили все занадто багато, звичайно сама пару тих студентів, а дозволяють кошти, з репетиторами, так що у вас є набагато більш інтимне можливості, ніж зали Ресторан передбачити один-на-один допомоги. Тепер остаточне поглянути на деякі На кінець гри в поле зору. Ви можете бути знайомі з CS50 Hackathon. Ну, приходячи в грудні цього року, з 8:00 Вечора до 7:00 ранку, на початку Читання період, буде можливість зібратися з однокласниками - це буде близько 9:00 вечора - протягом якого ви поринете в ваше остаточне реалізації проекту поряд з однокласників, друзів, і продукти харчування. Це буде близько 1:00 ранку, коли Перша партія прибула їжа. А це приблизно 4:00 ранку, що конкретний рік на CS50 Hackathon. Але справжня кульмінація курсу призначені для ярмарку CS50, на всій території комплексу Виставка вашого власного кінцевого проектів, до якого сім'я і друзі все запросили, так як наші рекрутерів і наші друзі з промисловості. Це, наприклад, є уявлення про 2000 з гаком людей, які взяли участь минулих років. Вирази, подібні до цього, не рідкість, а так само зробити вашу однокласники насолоджуватися речами Ви досягли. А насправді, в цьому напрямку, у нас є START-OF перспективу захід, а також. Якщо такі речі, як це звернення до вас, або ви принаймні цікаво, що це, знаєте, що нова традиція Звичайно називається CS50 Головоломка День. І це був заснований пару років тому, щоб дійсно сигналізувати кампусі , Що інформатика нема про програмування, і це, звичайно, не про охоплення тільки тих студентів, , Які мають попередній досвід. Це дійсно про вирішення проблем в цілому. І так Puzzle день, протягом останніх декількох років, перетворилася на хороший партнерство з нашими друзями в Facebook, в результаті чого буде казкової призи та піци через річку I-лабораторії в цю суботу. Голова до URL, що з двома або трьома друзі, якщо ви хочете взяти участь в цій новій традиції. Тому я хотів би запитати, що ви тримаєте одну річ на увазі, і ми отримали просто двохвилинного ролика, , Щоб закрити сьогодні. 73%-число запам'ятати. Торт теж буде чекати вас поза цією трансепт як ми відкласти всього за пару моментів, які традиція курсу, а також. Але це цитата з ключових програму курсу, щоб тримати в голові. Що в кінцевому рахунку має в цьому курсі Не так багато, де ви закінчуєте по відношенню до своїх однокласників, але де Ви, в 12-му тижні в кінцевому підсумку по відношенню до Тиждень себе в 0. Але уявлення, що ми вийдемо вам з сьогодні це остання тут нашим же Данило, який зробив wrdly відео всього хвилину назад. Я залишаю вас з цим уявлення , Що чекає попереду. І, як ми це зробимо, якщо ми могли б CS50 Персонал від передньої частини кімнати прийти на до стадії розписувати всі більш візуального зображення в якості до що чекає на вас у цьому році - отримання ніяково. Ми закінчимо з цим Тут на екрані. [Музика Відтворення] DAVID мала: Це CS50. [MUSIC - матове і Кім, "Все в порядку"] Виступаючий 1: Я люблю CS50 більш кішок. Доповідач 2: Whoaaaa! [Сміється] DAVID мала: Це, тоді, є CS50. Ми будемо бачити вас у п'ятницю. [Оплески і захоплюватися] Оповідач: Наступного CS50, на сцені Демо не так, як планувалося. DAVID мала: Ми хочемо знайти Майка Сміт у цій телефонній книзі. Ну, що ваші інстинкти? Я міг би стрибати приблизно до середини телефонній книзі, погляд вниз, бачимо, що Я на М, і тепер я знаю, що Майк Сміт вліво. Він повинен бути з правого боку. І тому на даному етапі, ми може буквально розірвати - На даний момент, ми можемо буквально рвати - На даний момент, ми можемо образно рвати телефонну книгу на дві частини. [Ukelele бренькав]