[Музыка Воспроизведение] [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. На этот раз, однако, три линии не выполнить на всех, так как нет человек в комнате. И так 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 бренчал]