[Bermain muzik] [MUSIC - Rossini, "RANZ DES VACHES "DARIPADA WILLIAM BERITAHU] [MUSIC - THE BEAT INGGERIS, "MAC DARI KETUA SWIVEL "] [Tepuk tangan dan bersorak] DAVID MALAN: Jadi ini adalah CS50. Nama saya David Malan. Dan 73% daripada anda tidak mempunyai pengalaman sebelum dengan sains komputer, bertentangan dengan apa yang anda mungkin berfikir. Jadi hari ini kita fikir kita akan cip jauh pada yang tidak biasa, tetapi juga memberikan anda rasa, bagi mereka yang anda dengan lebih selesa, yang arahan anda boleh pergi semester ini. Jadi mari kita mulakan dengan ini. Saya benar-benar tidak tahu apa yang di dalam komputer, walaupun, seperti anda, saya menggunakannya setiap hari. Tetapi ia adalah beberapa jenis kotak, dan ada tidak banyak input ke dalamnya. Minimal, ada, apa? Mungkin kord kuasa. Dan sesungguhnya dengan bahan yang satu ini, elektrik, kita seolah-olah mampu melakukan agak sedikit pada hari ini. Tetapi pada akhir hari, kita perlu mewakili perkara-perkara bahawa kita mengambil berat tentang. Kita perlu untuk mewakili maklumat dalam bentuk tertentu. Dan anda mungkin sekurang-kurangnya samar-samar biasa dengan idea oleh binari atau bit entah bagaimana atau lain-lain, komputer dikurangkan kepada sifar dan orang-orang. Tetapi kita boleh menerima itu dan sekurang-kurangnya meletakkan sedikit cahaya untuk itu? Jadi saya mempunyai ini sedikit lampu meja di sini. Saya mempunyai soket elektrik di sini. Dan saya akan mencadangkan dalam yang komputer saya adalah sekurang-kurangnya satu perkara-perkara ini, sesuatu yang mampu daripada dihidupkan atau dimatikan. Dalam kes ini, ia merupakan satu lampu meja, tetapi pada tahap yang lebih rendah, ia adalah sesuatu yang dipanggil transistor. Tetapi dalam dunia kita, ia adalah lampu meja, jadi Saya akan pergi ke hadapan dan palam ini kepada elektrik saya di sini. Dan saya mendakwa bahawa menggunakan ini mudah, peranti mudah, suis ini mudah, saya boleh mewakili maklumat. Sebagai contoh, sekarang, saya mewakili apa-apa, kan? Saya mewakili apa yang saya akan memanggil 0 atau palsu, yang bertentangan dengan sesuatu sebenarnya hadir. Tetapi jika saya hanya menghidupkan suis ini, sekarang saya telah mewakili 1. Jadi menggunakan sekeping ini yang sangat mudah ingatan, jika anda akan, saya boleh mewakili maklumat. Sekarang malangnya, komputer saya tidak boleh melakukan semua yang banyak. Ia hanya boleh mewakili dua nilai di seluruh dunia - 0 atau 1. Tetapi apa yang satu penyelesaian yang jelas, sekarang, jika kita mahu mengembangkan komputer kita ingatan dan mewakili lebih daripada hanya 0 dan 1? Nah, mari kita mengambil satu lagi sedikit itu. Mari kita merebut suis lain, satu lagi transistor, tetapi anda ingin berfikir mengenainya. Biar saya pergi ke hadapan dan palam ini ke dalam komputer saya juga. Dan saya akan menuntut, sekarang, bahawa dengan menggunakan sedikit lebih elektrik dan beralih lebih daripada suis ini pada dan kira, saya boleh mewakili lebih seperti maklumat. Jadi sekarang, ini ialah 1. Jika saya mahu kini mewakili 2, saya boleh melakukan ini. Tetapi biasanya, konvensyen, kerana kita akan akhirnya lihat, saya akan melakukan ini. Jadi ini adalah 0, ini ialah 1. Ini akan menjadi 2. Dan tidak menghairankan, ini akan menjadi 3. Jadi dengan cara ini, masih, boleh kita mengira sehingga lebih jauh? Jika saya mendapat sedikit ketiga, suis ketiga, apa yang paling tinggi saya kini boleh mengira sehingga dari 0? Jadi 7 jika saya bermula pada 0, betul? Kerana jika saya menghidupkan lampu ini di dalam dan di sebenarnya palam ini ketiga dan terakhir cahaya ke dalam soket elektrik saya di sini, maka saya mempunyai keupayaan untuk mewakili mana-mana dua nilai di sini, dua nilai di sini, dua nilai di sini - dan saya boleh mewakili 2 kali 2 kali 2, atau lapan nilai yang mungkin. Dan jika saya memulakan perakaunan pada 0, jadi itulah 0, 1, 2, 3, 4, 5, 6, 7. Jadi perduaan ini. Ia benar-benar adalah semudah itu. Dan saya berpendapat bahawa ini adalah sebenarnya agak biasa kepada kebanyakan semua orang di dalam bilik ini. Biar saya pergi ke hadapan dan membuka editor teks kecil di sini. Dan anda mungkin ingat dari sekolah rendah bahawa kita mempunyai perkara-perkara seperti beratus-ratus tempat, tempat puluh, dan tempat yang. Dan ingat bahawa jika anda mempunyai beberapa perpuluhan nombor, seperti sesuatu yang rawak seperti 123, anda akan pada dasarnya menulis bahawa di dalam bentuk ketiga-tiga tiang. Dan mengapa adalah 1, 2, 3 apa kita tahu sebagai 123? Nah, dalam ruang paling kiri, kita mempunyai satu 100 campur dua 10s, supaya 120, ditambah tiga 1s, supaya 123. Sekarang dunia ini yang kita hanya diterangi adalah sama seperti anda telah biasa dengan bertahun-tahun, kecuali kini, tiang kami tidak kuasa 10. Mereka hanya kuasa 2. Jadi sedangkan itulah tempat orang-orang itu, ini akan menjadi tempat yang berdua-dua, ini adalah akan menjadi tempat yang merangkak. Dan kerana saya hanya menggunakan yang paling mudah mekanisme untuk mengubah keadaan dalam dan di luar - elektrik yang mengalir atau elektrik tidak mengalir - Saya tidak mempunyai cukup ekspresif sama pelbagai sebagai 0 melalui sembilan. Kami akan memastikan ia sangat mudah di dunia ini komputer. Saya hanya mempunyai 0 atau 1 - Mati atau, palsu atau benar. Dan supaya apa yang saya mewakili sekarang 1, 1, 1, kerana masing-masing lampu diterangi. Well, yang memberikan saya satu 4 tambah satu 2, jadi itu 6, tambah satu 1, dan itulah 7. Dan ergo tidak urutan ini daripada tiga bit mewakili nombor 7. Jadi semua masa ini, di dalam anda komputer, telah menjadi apa-apa bilangan transistor, apa-apa bilangan bit. Tetapi pada akhir hari, kita boleh mewakili maklumat sebagai hanya sekali. Sekarang malangnya, kami hanya dikira sehingga 7 dalam CS50 setakat ini, tetapi mudah-mudahan kita boleh melakukan sedikit yang lebih baik daripada itu. Dan sesungguhnya kita boleh. Katakan bahawa kita sebagai manusia hanya sewenang-wenangnya membuat keputusan bahawa kita akan untuk mengaitkan nombor seperti 1 dan 2, 3, 4, 5, 6, 7, dengan huruf tertentu abjad. Dan atas sebab-sebab sejarah, saya akan mula agak sewenang-wenangnya, tetapi saya akan berkata, manusia, kita akan memutuskan standard, di seluruh dunia, yang 65 mewakili bilangan huruf A. 66 akan mewakili B. Dot, dot, dot. 90 akan mewakili Z. surat Dan mari kita andaikan, jika kita benar-benar meletakkan beberapa berfikir ke dalamnya, kita boleh datang dengan nombor untuk tanda seru dan huruf kecil, dan sesungguhnya, orang lain telah dilakukan bahawa untuk kita. Jadi sekarang kita mempunyai bit yang kita boleh mewakili nombor, nombor dengan yang kita boleh mewakili huruf, dan dengan surat boleh kita kini mula mengarang e-mel dan watak-watak percetakan pada skrin. Jadi biarlah saya menjemput, jika saya boleh, lapan sukarelawan berani - yang tidak keberatan muncul bukan sahaja pada kamera tetapi di internet - untuk tampil di sini dan mewakili lapan seperti bit, dan bukannya tiga. Jadi bagaimana kira-kira satu, dua? Bagaimana kira-kira tiga? Bagaimana kira-kira empat dalam cahaya biru, lima di akhir? Tentang seseorang di sini? Enam di hadapan, tujuh di hadapan, dan lapan di hadapan, serta. Jadi saya hanya kebetulan datang bersedia dengan sekumpulan seluruh slip kertas. Dan pada keping kertas nombor yang mewakili apa tiang anda semua akan mewakili. Jadi, anda akan - apa nama anda? PELAJAR: Anna Lea. DAVID MALAN: Anna Leah, anda akan menjadi ruang 128s. Anda? PELAJAR: Chris. DAVID MALAN: Chris akan menjadi ruang 64s. Anda? PELAJAR: Dan. DAVID MALAN: Dan akan menjadi ruang 32s. PELAJAR: Pramit. DAVID MALAN: Pramit akan menjadi ruang 16s itu. PELAJAR: Lillian. DAVID MALAN: Lillian akan 8s itu. PELAJAR: Jill. DAVID MALAN: Jill akan menjadi ruang 4s. PELAJAR: Mary. DAVID MALAN: Mary akan menjadi 2s, dan? PELAJAR: Daud. DAVID MALAN: David akan menjadi ruang 1s. Jadi, jika anda semua boleh melangkah sedikit hadapan supaya semua orang boleh melihat. Apa yang lelaki tidak melihat bahawa pada belakang ini slip kertas adalah lembaran menipu kecil yang kira-kira untuk mengarahkan lapan bit untuk sama ada mengangkat tangan atau tidak mengangkat tangan mereka. Jika tangan mereka naik, mereka mewakili 1. Jika tangan mereka tetap di bawah, mereka mewakili 0. Sementara itu, kami penonton harus dapat mengetahui, berdasarkan ini pemetaan, apa yang tiga huruf perkataan ini orang kira-kira untuk menyatakan. Jadi dalam hanya seketika, anda akan membaca baris pertama dari belakang lembaran menipu anda, dan anda sama ada akan menaikkan atau tidak mengangkat tangan anda. Jika anda seorang 1, anda meningkatkan, jika anda 0, anda berdiri di sana canggung, sama seperti itu. Go. Apakah nombor yang, pertama sekali, yang lelaki ini mewakili? 66. 66, betul? Kami mempunyai 1 dalam ruang 64s, 1 dalam ruangan 2s itu. Yang memberikan saya 66, jadi yang muncul untuk mewakili B. Jadi anda semua telah dinyatakan - OK, itu sudah cukup. B. Jadi sekarang mari kita bergerak ke surat kedua kami. Go. Siapa cepat pada matematik di sini? Jadi 79. Sekali lagi, jika kita menambah semua daripada tiang-tiang di mana ada 1, pada masa ini, hanya seperti yang kami lakukan sebelum ini dengan yang paling mudah contoh 7, kita sekarang mendapatkan nombor 79. Yang menurut pemetaan kita adalah surat O. Jadi, kita sudah hampir. B, O. Dan akhir sekali, pergi. Apa yang mereka mewakili sekarang? Konsensus kurang. Itu hanya satu bisikan mutlak. Ya, ia sebenarnya 87. Baik. Jadi, jika kita merancang kembali bahawa sehingga - mari kita mula memanggil carta ASCII kami, American Standard Code Pertukaran Maklumat. Itu memberikan kami surat - tidak "bo" tetapi "tunduk." Dan itulah yang sempurna petunjuk untuk anda semua untuk mengambil tunduk dan kepala di belakang. Thank you very much. [Tepuk tangan] DAVID MALAN: Anda boleh menjaga mereka. Walaupun sebenarnya, akan sesiapa seperti lampu meja, juga? [Berteriak DARI PENONTON] DAVID MALAN: lampu meja? [Ketawa] DAVID MALAN: Betul ke? Lampu meja untuk semua orang? Baiklah. Jadi bermula dengan yang paling mudah prinsip, kita kini bukan sahaja dikira daripada 0 sepanjang jalan sehingga 7, kami telah menganggap bahawa hanya dengan membuang lebih banyak bit atau lebih lampu atau lebih transistor pada masalah ini, kita boleh mewakili nombor-nombor yang lebih besar dan lebih besar, dan ergo, antara yang lebih besar dan lebih besar huruf, seperti bahasa Inggeris. Dan hanya mari kita pada kepercayaan untuk hari ini yang sama kita boleh mula mewakili grafik dan video dan apa-apa beberapa media lain yang dengannya kita biasa hari ini. Jadi ini adalah CS50, dan di dalam kelas ini bersama-sama anda, sekali lagi, sangat banyak rakan-rakan yang mempunyai masa pengalaman seperti anda. Dan saya menyebut ini hanya kerana agak sering, termasuk baru-baru ini sebagai salah satu bayat menasihati peristiwa dan pada mahasiswa tingkat kedua musim bunga lepas menasihati Sekiranya, kita sering mendengar pelajar menolak apabila datang ke meja CS, baik, Saya telah memikirkan tentang mengambil ini kelas intro, tetapi saya tidak benar-benar orang komputer. Atau, tetapi semua orang pasti tahu lebih daripada saya. Dan saya meletakkan ini dalam tulisan terbesar mungkin, untuk menyampaikan mesej ini bahawa itu bukan sebenarnya kes itu. Dan jika anda tertanya-tanya, sekiranya Saya, sebenarnya, berada di sini? Sedar bahawa bukan sahaja ini kursus ini Tajuk Pengenalan kepada Komputer Sains, ia adalah Pengenalan kepada Komputer Sains I. Jadi memang ada pengenalan yang kedua itu. Jadi anda tidak, sebenarnya, di tempat yang salah. Dan di antara matlamat saya untuk hari ini untuk meredakan sebarang kebimbangan itu anda mungkin ada, tetapi juga untuk melukis gambar apa yang di kedai untuk pelajar-pelajar yang kurang dan lebih selesa sama dalam kursus ini. Tetapi pertama, satu perkataan pada satu daripada pemberian anda mempunyai hari ini, antaranya beberapa Lazim. Ia adalah satu wawasan kita untuk beberapa ketika sekarang untuk memperkenalkan penggredan baru pilihan ke dalam kursus ini - iaitu Sab / UNSAT. Falsafah bagi saya, ia adalah lebih banyak, lebih penting bahawa pelajar-pelajar di dalam kelas ini melibatkan diri dengan material, boleh dicabar oleh material, dan bimbang jauh, jauh kurang tentang mekanik skor sebenar dan gred surat pada semester akhir, tetapi benar-benar memeluk kursus dan bahan-bahan itu. Dan benar-benar ini berasa lebih amnya, untuk apa yang menarik kepada mereka, berasa dicabar dan ganjaran tetapi tanpa rasa takut kegagalan. Dan sesungguhnya, ini juga adalah yang berulang-ulang tema dalam ini dan lain-lain pengenalan kursus-kursus dalam bidang-bidang lain, bahawa anda mempunyai trepidation ini apabila ia datang kepada meletakkan jari seseorang dalam perairan yang tidak dikenali. Saya sendiri, kembali pada tahun 1995, adalah bayat. Saya amat memberi tumpuan kepada yang a concentrator Gov sini. Dan lagi saya sentiasa membesar dengan sedikit kepentingan dalam sains komputer. Saya sentiasa ingin tahu. Tetapi ketika itu, walaupun, saya takut ini walaupun melangkah kaki di CS50, begitu banyak supaya saya tidak membeli-belah ia tahun bayat. Dan satu-satunya sebab saya meletakkan kaki di pintu tahun kedua adalah kerana saya telah dibenarkan untuk mengambil lulus / gagal. Tetapi walaupun lulus / gagal diperlukan bahawa saya mendapat sehingga saraf untuk membuat temujanji dengan Profesor Kernehan pada masa itu, membawa lembaran ini besar kertas, dan meminta dia untuk tandatangan beliau dan beliau kebenaran untuk meneroka perairan ini yang tidak dikenali. Dan ia tidak membantu dalam beberapa tahun kebelakangan apabila melakukan ini dalam CS50, apabila kita digunakan untuk lulus / gagal, begitu juga akan berpuluh-puluh atau beratus-ratus rakan-rakan anda perlu datang, Allah melarang, di hadapan Sanders dengan borang ini, bahawa dalam sesetengah minda mewakili ketidakupayaan, Saya berani mengatakan, untuk melaksanakan adalah tahap rakan-rakan anda. Yang tidak masuk akal, tetapi saya fikir ada mentaliti itu. Dan ada tidak pernah menjadi dalam budaya ini daripada SAT / UNSAT, atau lulus / gagal lebih secara amnya, dalam kursus ini, atau benar-benar di kampus ini. Jadi tahun ini kita berubah itu. Saya akan gembira separuh daripada kelas ini atau lebih berakhir sehingga mengambil CS50 Sab / UNSAT. Dalam masa setahun, ia akan menjadi indah jika hampir semua orang. Selepas itu mungkin kita akan bekerja pada gred surat di Harvard Kolej amnya. Tetapi untuk sekarang, kita akan melakukan ini dalam kami bidang sendiri, dan saya akan sepenuh hati menggalakkan anda untuk mengkaji semula dan Soalan Lazim bertanya soalan seperti yang anda lihat patut, supaya diharapkan anda, tidak seperti saya, tidak akan cukup mempunyai bahawa faktor ketakutan yang sama apabila meneroka apa yang mungkin tempat yang tidak dikenali. Jadi apa CS50? Ia adalah satu pengenalan kepada perusahaan intelektual komputer sains dan seni pengaturcaraan. Tetapi apa yang benar-benar bermakna? Well, setakat ini, kita berbincang secara ringkas kira-kira mewakili maklumat. Tetapi menganggap bahawa kita benar-benar mahu untuk melakukan sesuatu dengannya. Kita perlu memperkenalkan konsep apa yang kita akan memanggil algoritma. Algoritma adalah satu prosedur, proses, satu set arahan untuk melakukan sesuatu. Dan algoritma boleh menjadi sesuatu mudah super. Sebagai contoh, satu contoh yang mana beberapa anda mungkin biasa ialah perkara di sini. Jadi buku ini di sini adalah semakin tarikh, tetapi pada satu ketika dahulu, ia terkandung banyak seluruh nama-nama dan nombor telefon. Dan sesungguhnya, jika saya mahu mencari seseorang di dalam buku telefon ini - berkata, seseorang yang bernama Mike Smith - Saya dapat mencari Mike Smith dalam apa-apa bilangan cara yang agak mudah. Saya boleh bermula pada awal dan bergerak ke muka surat 1, tidak ada. Page 2, tidak ada. Page 3. Adalah algoritma itu, adalah bahawa proses, betul? Jadi ia adalah betul, bukan? Saya jenis bodoh untuk melakukannya di bahawa cara, tetapi akhirnya saya akan mencari nama keluarga S, dan diharapkan Mike adalah dalam seksyen itu, dan saya akan menjadi dilakukan dengan algoritma saya. Tetapi sudah tentu ia bukan intuitif. Setiap manusia yang paling munasabah dalam bilik tidak akan berbuat begitu. Apa yang akan anda lakukan? Anda akan telah lurus ke tengah, betul-betul? Kira-kira ke tengah. Dan anda sedar, oh, ini adalah Cik Jadi Mike Smith, nama terakhir adalah Smith, tidak, jelas, maka dalam separuh kiri buku ini. Dia mesti ke arah S adalah di sebelah kanan. Dan pada ketika ini, walaupun kebanyakan kita tidak melakukan ini pada hakikatnya, kita boleh betul-betul lusuh masalah ini pada separuh. [Bersorak dan tepukan] DAVID MALAN: Terima kasih. [Bersorak dan tepukan] DAVID MALAN: Anda benar-benar boleh lusuh ini masalah dalam separuh, meninggalkan saya dengan, secara literal, setengah masalah kerana besar. Jadi, jika buku telefon ini adalah - dan ia mungkin adalah - kira-kira 1,000 muka surat, kini ia hanya 500. Jika saya melakukan ini sekali lagi dan saya sedar, oh, damn, saya pergi terlalu jauh, saya dalam Ts seksyen, saya boleh juga - kiasan atau harfiah - merobek buku telefon - ia adalah benar-benar lebih mudah ketika itu. Saya benar-benar boleh merobek buku telefon pada separuh, meninggalkan saya sekarang dengan tidak 1000, bukan 500 - 250 muka surat. Dan saya boleh pergi 125, dan separuh daripada itu, dan separuh daripada itu, dan separuh daripada itu, sehingga akhirnya saya akan ditinggalkan dengan hanya satu halaman. [Ketawa] DAVID MALAN: Itulah bahagian I gagal pada. Satu halaman tunggal yang Mike adalah diharapkan. Sekarang mereka algoritma yang berbeza boleh jenis dinilai atau dinilai dalam cara yang berbeza. Yang pertama adalah sangat linear, bukan? Menjadikan halaman, mencari Mike. Menjadikan halaman, mencari Mike. Ia amat linear. Jika ada satu halaman yang lebih dalam telefon buku, ia mungkin akan mengambil saya satu lagi kedua, satu unit masa, Walau bagaimanapun kita mengira masa. Jadi saya mungkin menarik seperti ini baris ini di sini, di mana seperti saiz masalah kenaikan dari kiri ke kanan - buku telefon mendapat yang lebih kecil untuk lebih besar - dan masa akan meningkat pada paksi menegak, yang lebih besar buku telefon itu. Jadi n hanya ubah umum bahawa saintis komputer digunakan untuk mewakili beberapa nilai, nombor tertentu. Jadi n akan meningkatkan linear. Menggandakan saiz buku telefon, ia akan membawa saya dua kali ganda masa, kemungkinan besar, untuk mencari Mike. Sekarang saya boleh menjadi pintar tentang perkara ini, bukan? Saya bosan dengan cepat. Boleh melakukan ini dengan berdua-dua. Jadi dua muka surat, kemudian empat, kemudian enam, maka lapan. Dan saya boleh mula terbang melalui satu sedikit lebih cepat, walaupun pada risiko kecil overshooting Mike, tetapi keluk yang tidak akan semua yang berbeza. Ia masih akan menjadi lurus line, tetapi sedikit lebih cepat. Tetapi apa yang saya lakukan? Saya benar-benar melakukan sesuatu asasnya yang lebih baik. Saya mencapai apa yang kita akan memanggil logaritma masa, log n, di mana hijau ini talian mempunyai banyak, banyak, banyak kelebihan kurang lurus kepadanya. Dan sebaliknya, ia menunjukkan, kerana ia semacam menghampiri infiniti pernah jadi secara beransur-ansur, bahawa saya sebenarnya boleh mengambil-page 1000 buku telefon, dua kali ganda saiz tahun depan - kerana rasa banyak lebih ramai orang berpindah ke bandar. Jadi sekarang saya telah mendapat 2,000 muka surat, tetapi bagaimana banyak lagi langkah-langkah yang bijak adalah algoritma akan mengambil? Hanya satu. Maksud saya, itu adalah satu perkara yang berkuasa. Jika kita pergi ke muka surat 4,000 tahun depan, yang akan mengambil saya hanya dua langkah. Jadi, anda boleh membuang lebih besar dan lebih besar masalah pada saya, tidak seperti web adalah membuang masalah yang lebih besar dan lebih besar setiap hari di Google dan Facebooks daripada dunia, dan ia tidak apa-apa masalah besar. Kerana saya meletakkan pemikiran lebih dan penjagaan ke algoritma saya dengan yang untuk menyelesaikan masalah cekap. Dan sesungguhnya, yang akan menjadi salah satu matlamat kursus ini. Anda akan, di sepanjang jalan, belajar bagaimana untuk program. Anda akan belajar bagaimana untuk program di apa-apa bilangan bahasa. Tetapi pada akhir hari, kursus ini mengenai menyelesaikan masalah dan mendapat lebih baik pada menyelesaikan masalah - dan, seperti dalam kes-kes seperti ini, penyelesaian masalah dengan lebih cekap. Sekarang setakat ini, kami telah melakukan ini agak intuitif. Mari kita memperkenalkan sesuatu yang agak generik dipanggil kod pseudo. Oleh itu, kita akhirnya akan dapat, dalam kursus ini, untuk pelbagai bahasa pengaturcaraan. Tetapi hari ini kita akan buat dalam bahasa Inggeris seperti sintaks, di mana anda hanya jenis mengatakan apa yang anda maksudkan, tetapi anda pernah jadi ringkas dan anda tidak bimbang tentang tatabahasa dan ayat yang lengkap. Anda hanya menyatakan diri sebagai ringkas yang mungkin. Jadi pseudokod adalah Bahasa Inggeris seperti sintaksis yang mewakili bahasa pengaturcaraan. Dan ke arah itu, izinkan saya mencadangkan supaya kita kini model proses kita hanya diterangkan mengira sesuatu yang sedikit berbeza, kali ini mengambil melihat video ini lima minit dihasilkan oleh rakan-rakan kami di TED yang mentakrifkan apa pseudokod adalah, mentakrifkan apa pemikiran algoritma adalah, dan juga walaupun contoh yang anda kira-kira untuk melihat adalah, dalam dirinya sendiri, super mudah, ia adalah akan mula memberi kita mental model, perbendaharaan kata, dengan yang berbuat banyak, lebih kompleks algoritma agak cepat. [MULA MAIN SEMULA VIDEO] [Bermain muzik] Pencerita: Apakah algoritma? Dalam sains komputer, algoritma adalah set arahan untuk menyelesaikan beberapa masalah langkah demi langkah. Biasanya, algoritma dilaksanakan oleh komputer, tetapi kita manusia mempunyai algoritma, juga. Sebagai contoh, bagaimana anda akan pergi kira-kira mengira bilangan orang di dalam bilik? Nah, jika anda seperti saya, anda lebih mungkin mata pada setiap orang, satu di masa, dan mengira dari 0. 1, 2, 3, 4, dan sebagainya. Nah, itu algoritma. Malah, mari kita cuba untuk menyatakan ia sedikit lebih secara rasmi di pseudokod - Sintaks bahasa Inggeris seperti yang menyerupai bahasa pengaturcaraan. Mari N 0 sama. Bagi setiap orang di dalam bilik, yang ditetapkan N sama dengan N campur 1. Bagaimana untuk mentafsir pseudokod ini? Nah, satu baris mengisytiharkan, jadi untuk bercakap, ubah yang dipanggil N dan kepada asal nilai kepada 0. Ini hanya bermakna bahawa pada awal algoritma kami, perkara yang dengannya kami mengira mempunyai nilai 0. Lagipun, sebelum kita mula mengira, kami tidak dikira apa-apa lagi. Panggilan ini N ubah hanya konvensyen. Saya boleh memanggilnya apa-apa yang paling. Sekarang garis dua demarks permulaan gelung, satu urutan langkah-langkah yang akan mengulangi beberapa beberapa kali. Jadi, dalam contoh kita, langkah yang kita ambil mengharapkan orang di dalam bilik. Di bawah garis dua adalah barisan tiga, yang menerangkan bagaimana kami akan pergi kira-kira mengira. Kasturi ini menunjukkan bahawa ia adalah tiga baris yang akan berulang. Jadi apa pseudokod yang dikatakan adalah bahawa selepas bermula pada 0, bagi setiap orang di dalam bilik, kami akan meningkatkan N oleh 1. Sekarang adalah algoritma ini betul? Nah, mari kita bang pada sedikit. Adakah ia berfungsi jika terdapat dua orang di dalam bilik? Mari kita lihat. Selaras satu, kita memulakan N kepada 0. Bagi setiap dua orang, kita kemudian kenaikan N oleh 1. Jadi dalam perjalanan pertama melalui gelung, kita kini N dari 0 kepada 1. Pada perjalanan kedua melalui yang sama gelung, kita kini N dari 1 hingga 2. Dan sebagainya dengan tujuan ini algoritma ini, n 2, yang sememangnya sepadan dengan bilangan orang di dalam bilik. Setakat ini, begitu baik. Bagaimana pula dengan kes sudut, walaupun? Katakan terdapat 0 orang di dalam bilik - selain saya, siapa yang melakukan pengiraan. Selaras satu, kita memulakan N kepada 0. Kali ini, walaupun, garis tiga tidak melaksanakan di semua kerana tidak ada orang di dalam bilik. Dan sebagainya N masih 0, yang sepadan dengan beberapa orang di dalam bilik. Agak mudah, bukan? Tetapi orang-orang mengira pada satu masa agak tidak cekap, terlalu, tidak? Sesungguhnya kita boleh melakukan yang lebih baik. Mengapa tidak mengira dua orang pada satu masa? Sebaliknya mengira 1, 2, 3, 4, 5, 6, 7, 8, dan sebagainya, mengapa tidak mengira, 2, 4, 6, 8, dan sebagainya? Ia juga kedengaran lebih cepat, dan ia pasti adalah. Mari kita meluahkan pengoptimuman ini dalam kod pseudo. Mari N 0 sama. Bagi setiap pasangan orang di dalam bilik, ditetapkan N sama dengan N campur 2. Perubahan yang agak mudah, bukan? Bukannya orang kiraan satu pada satu masa, kita bukannya mengira mereka dua pada satu masa. Algoritma ini adalah dengan itu dua kali secepat yang lalu. Tetapi adakah ia betul? Mari kita lihat. Adakah ia berfungsi jika terdapat dua orang di dalam bilik? Selaras satu, kita memulakan N kepada 0. Bagi pasangan satu orang, kita kemudian kenaikan N dengan dua. Dan sebagainya dengan tujuan ini algoritma, N 2, yang sememangnya sepadan dengan bilangan orang di dalam bilik. Katakan seterusnya yang terdapat 0 orang di dalam bilik. Selaras satu, kita memulakan N kepada 0. Seperti sebelum ini, barisan tiga tidak melaksanakan pada semua, kerana tidak ada mana-mana pasangan orang di dalam bilik. Dan sebagainya N masih 0, yang sememangnya sepadan dengan bilangan orang di dalam bilik. Tetapi bagaimana jika terdapat tiga orang di dalam bilik itu? Bagaimana ini tambang algoritma? Mari kita lihat. Selaras satu, kita memulakan N kepada 0. Untuk sepasang orang-orang, kita kemudian kenaikan N dengan 2. Tetapi apa? Tidak ada satu lagi pasangan yang penuh dengan orang di dalam bilik, jadi dua baris tidak lagi terpakai. Dan sebagainya dengan tujuan ini algoritma, N masih 2, yang tidak betul. Malah, algoritma ini yang dikatakan kereta, kerana ia mempunyai kesilapan. Mari pembelaan dengan beberapa pseudokod baru. Mari n 0 sama untuk setiap pasangan orang di dalam bilik. Set N sama dengan N campur 2. Jika seseorang masih berpasangan, ditetapkan N sama dengan N campur 1. Untuk menyelesaikan masalah ini khususnya, kami telah diperkenalkan, selaras empat, yang keadaan, atau dikenali sebagai cawangan yang hanya melaksanakan jika ada satu orang yang kita tidak boleh pasangan dengan yang lain. Dan sehingga kini, sama ada satu atau tiga atau apa-apa bilangan ganjil orang di Bilik, algoritma ini kini akan mengira mereka. Bolehkah kita melakukan yang lebih baik? Nah, kita boleh mengira dalam 3 yang atau 4s atau 5S dan 10s, tetapi lebih dari itu, ia adalah akan mendapat sedikit sukar untuk mata. Pada akhir hari ini, sama ada dilaksanakan oleh komputer atau manusia, algoritma hanya satu set arahan dengan untuk menyelesaikan masalah. Ini hanya tiga. Apa masalah yang anda menyelesaikan dengan algoritma? [AKHIR VIDEO MAIN SEMULA] DAVID MALAN: Itu adalah satu-satunya masa Saya akan muncul dalam bentuk kartun. Tetapi di mana cerita yang daun dari, sekarang, bagaimana kita boleh melakukan yang lebih baik? Bertiga dan merangkak, kita mendakwa, kita boleh mengira orang-orang yang lebih cepat, tetapi kita boleh asasnya melakukan lebih baik daripada itu? Dan saya taruhan kita boleh. Jika kita memperkenalkan sedikit kita sendiri pseudokod di sini, saya akan mencadangkan bahawa kita boleh mencapai baris seperti ini. Kami tidak akan mengira orang satu, dua, tiga, empat. Kami tidak akan pergi ke dua, empat, enam, lapan. Kami akan melakukan yang lebih baik pada asasnya memikirkan semula oleh masalah itu, dan dalam hal ini kes, sebaliknya memanfaatkan digunakan sepenuhnya sumber. Dalam seketika, saya berharap anda akan memaafkan dan humor kami oleh berdiri di tempat, di mana titik kita akan bertanya kepada setiap kamu untuk mengambil di anda minda nombor 1. Anda kemudian akan semakin canggung, sebagai masa berlalu, mencari orang lain yang berdiri, menggabungkan nombor anda bersama-sama dengan menambah mereka. Salah seorang daripada kamu kemudiannya akan berlumba untuk duduk turun pertama, dan orang lain akan berulang. Jadi, dalam erti kata lain, dengan kekuatan semua anda dengan nombor 1, dan kemudian menggabungkan mereka ke dalam 1s 2s 2s dan orang-orang ke 4s, dengan semua orang semakin duduk, kita harus, pada akhir algoritma ini, mempunyai hanya satu pinjaman jiwa yang tidak duduk dengan cukup pantas tetapi yang mempunyai jumlah keseluruhan penonton dalam atau fikirannya. Jadi, jika anda akan, mari kita pergi ke hadapan dan - langkah satu - berdiri di tempat. Dan melaksanakan. [Orang ramai merungut] DAVID MALAN: Adakah anda tahu mana Lauren adalah? 729? [Orang ramai merungut] DAVID MALAN: Semua betul? [Orang ramai merungut] DAVID MALAN: Baiklah, kita harus akan hampir akhir. Kita melihat satu rakan-rakan di sini masih berdiri. Siapa lagi yang perlu berpasangan? Jika anda semua ingin berpasangan. Seseorang top up. Kenapa saya tidak menghulurkan tangan di sini. Bagi segelintir orang yang masih berdiri, apa nombor yang anda ada di dalam fikiran anda? PELAJAR: 78. DAVID MALAN: 78 plus - siapa yang berdiri di bawah sini? PELAJAR: 39. DAVID MALAN: Plus 39. Plus yang lain masih berdiri? 81? OK, siapa lagi? 81 yang lain? Wow. Dan kemudian apa yang ada di belakang? PELAJAR: 49. DAVID MALAN: 49, ditambah? PELAJAR: 98. DAVID MALAN: 98 plus? Adalah bahawa orang lain? 12? Kerja yang baik. [Ketawa] DAVID MALAN: Oh, 112 - oh. Baik kerja! [Ketawa] [Tepuk tangan] DAVID MALAN: Sesiapa sahaja masih berdiri? Maaf? PELAJAR: 99. DAVID MALAN: 99. Sesiapa sahaja yang masih berdiri? Dan jumlah pelajar-pelajar di sini sebenarnya, menurut - adakah anda mempunyai nombor? Oh, bilangan sebenar orang di bilik, mengikut akaun yang rakan-rakan yang mengajar telah melakukan dalam perjalanan semua orang dalam, adalah 729. Jadi keluar dari sebilik penuh pelajar Harvard yang dikira sendiri, Jawapannya adalah 637. [Ketawa] DAVID MALAN: Jadi dekat. Tetapi masih. OK, supaya pengajaran masa, bukan? Sekarang ini adalah apa yang kita gambarkan sebagai bug. Tempat di sepanjang perjalanan, kami melakukan beberapa aritmetik salah, atau orang yang duduk, atau kiri, atau sesuatu yang salah. Tetapi itu tidak mengapa. Kerana walaupun masih, kita mendapat cukup dekat. Dan saya berpendapat bahawa kita dapat yang salah menjawab banyak yang lebih cepat daripada saya akan mempunyai menggunakan pendekatan saya lebih linear. Jadi mari kita menganggap kita sebenarnya tidak mendapat bahawa membetulkan, tetapi berfikir tentang apa yang kini yang berlaku setiap kali, berbanding saya sendiri algoritma menunjuk naif. Satu, dua, tiga. Jika ada sememangnya adalah 729 atau 637 orang di sini, yang akan mengambil saya betul-betul 637 atau 729 pointings satu jari dan menokok jumlah kiraan saya. Dan saya boleh melakukan sedikit lebih baik dengan akan dua, empat, enam, lapan, dan dua kali ganda kelajuan itu, mungkin juga tiga atau empat kali ganda, bergantung bagaimana saya boleh berbuat demikian mengira dalam kepala saya. Tetapi pendekatan ini yang anda semua mengambil adalah berbeza. Kerana pada mulanya, anda semua berdiri. Jadi semua 729. Dan kemudian benar-benar separuh anda duduk. Dan selepas itu, satu lagi separuh daripada anda duduk. Dan selepas itu, satu lagi separuh daripada anda duduk. Dan jumlah masa yang anda lelaki boleh duduk adalah lebih kurang lapan atau sembilan atau sepuluh jumlah masa, bergantung kepada apa yang jumlah kiraan kita. Dan kita boleh menyusun daripada melakukan ini cara yang lain. Jika kita mempunyai 1,024 orang di dalam bilik itu, jumlah masa anda boleh mengurangkan separuh 1,024 orang adalah 10. Sekarang berfikir tentang hal itu dalam arah lain. Katakan, sungguh, bahawa kita mempunyai, katakan empat bilion orang di dalam bilik ini, atau bilik lebih besar. Berapa kali kita akan pergi melalui algoritma ini, seperti separuh kelas yang duduk? Ia hanya akan mengambil 32 seperti operasi, walaupun dalam kelas saiz empat bilion. Mengapa? Kerana empat bilion pergi ke dua bilion, pergi ke satu juta, pergi ke 500 juta, pergi ke 250 juta, dot, dot, dot. Saya hanya boleh melakukan bahagian yang kira-kira 32 kali, di mana ketika, semua orang kecuali seseorang akan dibiarkan berdiri. Dan itu juga adalah jenis yang kuat idea yang semakin kita akan cuba leverage dalam kursus ini, dan dalam pengaturcaraan dan sains komputer yang lebih secara amnya, kuman sesuatu idea dengan yang kita boleh menyelesaikan masalah banyak, lebih kuat. Jadi kami mula agak mudah dengan pseudokod dan seorang lelaki di dalam bilik, tetapi kini dengan seluruh bilik penuh dengan orang yang telah kita lakukan pada asasnya yang lebih baik. Nah, mari kita kini peralihan dari pseudokod untuk beberapa kod sebenar. Bahasa ini anda kira-kira untuk melihat berlaku akan dipanggil JavaScript, dan kami akan kembali ini ke arah akhir semester. Ia adalah satu bahasa pengaturcaraan yang anda digunakan untuk membuat laman web dan lain-lain perisian pada hari ini. Dan kita telah digunakan, terima kasih kepada rakan daripada kita di Stanford, untuk mengekod beberapa maklumat tersembunyi di sini. Ini adalah seni steganografi, jadi untuk bercakap, di mana anda boleh menyembunyikan maklumat apa yang sebaliknya kelihatan bunyi bising atau yang sama sekali berbeza imej sama sekali. Tetapi tertanam dalam imej ini tertentu merupakan satu mesej rahsia kejayaannya. Jadi biarlah saya pergi ke hadapan dan tarik sehingga imej yang sama di sini, ini masa dalam pelayar web. Dan saya akan melambai tangan saya pada beberapa butiran untuk hari ini, terutamanya untuk anda yang ini kelihatan seperti bukan sahaja JavaScript tetapi Greek, sebagai sepenuhnya bahasa asing. Tetapi ini adalah satu contoh bahasa pengaturcaraan. Dan sekarang, mengambil kepercayaan bahawa baris ini pertama kod - dan oleh kod, saya hanya bermakna teks. Text yang boleh saya telah benar-benar ditaip ke dalam Microsoft Word, jika saya mempunyai perisian hak untuk kemudian melakukan sesuatu dengan ia. Kod sumber pengaturcaraan, pengaturcaraan kod, adalah benar-benar hanya teks, dan ia kelihatan berbeza berdasarkan apa bahasa anda menggunakan, tidak seperti bahasa Inggeris dan Sepanyol dan Rusia semua kelihatan berbeza apabila anda menaip mereka pada papan kekunci anda. Jadi baris pertama ini, buat masa ini mengambil iman, hanya membuka grafik dari internet, grafik yang bising kita hanya melihat. Ini sejajar seterusnya di sini adalah satu contoh gelung, dan kita sebenarnya melihat bahawa sama jargon dalam video TED. Gelung adalah sesuatu yang berlaku sekali lagi dan sekali lagi, dan walaupun ini benar-benar kelihatan samar, dengan kata kunci untuk, dan beberapa kurungan, dan beberapa koma bertitik. Kami akan kembali kepada yang lama, tetapi gelung bahawa terdapat pada asasnya adalah memberitahu program ini, melelar atas segala orang-orang titik bising, dari kiri ke kanan, atas ke bawah. Kerana pada akhir hari, imej seperti ini - dan anda boleh sebenarnya jenis melihatnya pada projektor ini - adalah benar-benar hanya grid titik. Oleh itu, kita dapat mengenal pasti setiap orang-orang titik oleh koordinat, x, y, dan dengan ini program, sekarang kita boleh mula melakukan sesuatu untuk mereka titik. Jadi apa yang saya akan pergi ke hadapan di sini dan lakukan adalah saya akan membuat beberapa perubahan. Pertama saya akan pergi ke hadapan dan menghilangkan semua yang kehijauan dan kebiruan bunyi, dan saya akan pergi ke hadapan dan taip yang berikut diakui sintaks samar. im untuk imej. set biru di lokasi x, koma, lokasi y, kepada 0. Dalam erti kata lain, saya mahu hanya mematikan semua biru titik dalam gambar itu. Saya akan pergi ke hadapan sekarang dan klik Run ini / butang Simpan, dan anda akan notis pada sebelah kanan, imej yang terhasil muncul. Sekarang hijau super, tetapi itu bukan menghairankan, kerana saya benar-benar bertukar luar, dengan membuat 1 0 a, semua biru dalam gambar itu. Nah, sekarang mari kita buat ia sedikit lebih. im untuk imej, titik setGreen, x, y. Dan itu hanya bermakna Itekadar dari kiri ke kanan dan kemudian atas ke bawah. Mematikannya dengan nilai 0, juga. Simpan. Dan pada projektor, anda tidak boleh benar-benar benar-benar melihat apa-apa pada semua. Pada skrin komputer riba saya, jika saya rakan sebaya dalam hanya dengan cara yang betul, saya dapat melihat sedikit daripada imej, kerana mereka masih beberapa merah di sana. Jika anda pernah mendengar singkatan RGB - merah, hijau, biru - ia merujuk kepada komposisi ini imej menggunakan hanya mereka tiga warna. Dan sekarang, kita telah dibuang semua hijau, semua biru, tetapi tidak banyak merah. Jadi biarlah saya engkol sehingga merah. Bagaimana saya boleh berbuat demikian? Well, pertama, saya akan bertanya program ini soalan. Saya akan pergi ke hadapan dan mari kita memanggilnya berubah-ubah, seperti dalam algebra. Anda boleh mempunyai x atau y atau z. Saya akan mengisytiharkan pembolehubah dan berkata, meletakkan dalam pembolehubah ini, buat sementara waktu, nilai imej getRed nilai pada x, y. Dan sekali lagi, kita akan kembali kepada semua butiran ini pada masa hadapan. Tetapi untuk sekarang, hanya mengambil pada kepercayaan bahawa baris ini meminta program, apa nilai merah di x, y? Pada titik tertentu? Kemudian saya akan melakukan sesuatu untuk itu. Kemudian saya akan melakukan imej titik set merah pada x, y, y tetapi kali ini saya akan meningkatkan dengan melakukan kali merah, katakan, 10. Jadi peningkatan sebanyak faktor 10. Biar saya zum keluar sekarang dan klik dapat Run / Simpan. Dan VoilĂ , yang berada di sana keseluruhan masa, walaupun mata manusia tidak cukup melihatnya. Jadi sekali lagi, sekarang ini adalah kod yang sebenar, satu contoh bahasa yang kami akan datang kembali ke tidak lama lagi. Tetapi sedar, terutama orang-orang yang anda tidak mempunyai pengalaman itu, ia agak tidak lama lagi yang kita sendiri akan menulis kod seperti itu di sana. Malah, alat dengan yang anda semua agak biasa, mungkin, adalah yang CS50 sendiri alat kursus-membeli-belah, yang merupakan sebenarnya reboot musim panas ini oleh beberapa bekas pelajar CS50 sendiri, kini giliran TFS. Jadi ini berlaku untuk menjadi sebuah laman web yang dibina dalam bahasa yang dikenali sebagai PHP. Ia menggunakan pangkalan data yang dipanggil MySQL, perkara-perkara yang kita akan mendapat tangan kita kotor kemudian pada semester tersebut. Tetapi percaya atau tidak, walaupun sesuatu seperti ini akhirnya mengurangkan ke mudah gelung dan syarat-syarat dan cawangan, seperti yang kita lihat hanya masa lalu dalam video TED. Apa yang saya fikir saya akan lakukan sekarang ialah saham tidak hanya sesuatu yang kita kakitangan telah dibuat untuk kampus, tetapi sesuatu bekas pelajar - tiga pelajar, sebenarnya - dibuat pada tahun ini yang lalu, Sierra, Daniel, dan Sam, yang terakhir yang tidak mempunyai sebelum pengalaman programing apabila dia telah mengambil CS50. Dan untuk projek akhir mereka, mereka dipamerkan, di Pesta CS50, satu permohonan dipanggil wrdly, yang merupakan program berasaskan web yang mana mereka dibuat video ini yang saya fikir saya akan berkongsi kepada memberi anda rasa hanya apa yang mungkin pada akhir tempoh itu. [Bermain muzik] DAVID MALAN: Itu dari Minggu Zero untuk Minggu 12 tahun lepas. [Tepuk tangan] DAVID MALAN: Sebagai memujuknya juga benar-benar untuk membangkitkan selera anda adalah untuk apa yang mungkin, anda mungkin telah melihat sudah, atau tidak lama lagi boleh melihat, market.cs50.net, satu alat baru pasukan itu tentu mempunyai telah bekerja di, kali ini dalam dengan kerjasama Pelajar Harvard Agensi seperti yang bermula tahun ini dan berterusan ke dalam ini diharapkan datang musim panas anda akan mempunyai standard yang peluang di kampus untuk membeli dan menjual perkara-perkara yang menarik minat anda. Dan dengan perkongsian melalui HSA, anda akan juga dapat melepas item off dalam salah satu daripada kedai-kedai fizikal HSA di beberapa titik di masa depan, supaya perkara proksi, terutamanya kerana anda lulus dan tidak semestinya mahu membuang perkara-perkara, tetapi sebenarnya membayar mengemukakan kepada orang yang mungkin mengikuti anda di sini di kampus. Jadi lebih pada yang akan datang. Tetapi yang lebih konkrit, alat itu keluar dari CS50 di baru-baru ini tahun, yang mana sebahagian dari kamu mungkin biasa dan lain-lain anda mungkin Googling sekarang, di CS50.net/2x, anda akan mencari pautan kepada lanjutan Chrome yang demikian menggambarkan bagaimana anda boleh menggunakan JavaScript, bahasa yang sama kita digunakan dengan menara Eiffel masa yang lalu, untuk melaksanakan kelajuan main 2x untuk semua Harvard iSites video. Ini adalah sesuatu yang dibina ke dalam pemain video CS50 sendiri. Tetapi ini, juga, jika anda mula menggali kepada kod sumber, yang kita akan gembira menjadikan tersedia, anda akan melihat bagaimana anda juga boleh menyelesaikan masalah-masalah seperti itu, mempercepatkan widget di laman web dengan yang anda sudah biasa. Jadi perkataan sekarang kursus dan harapan dan apa yang akan berlaku. Secara umum, kita memang akan berkumpul di sini pada hari Isnin dan Rabu - walaupun Jumaat ini, kita akan berkumpul kerana Minggu Membeli-belah - 1:00-2:00, walaupun kadang-kadang sehingga 02:30. Memandangkan bahawa anda itu mungkin mahu atau perlu mengambil beberapa kelas pada 2:00 PM seterusnya, malah sebelum ini, tidak menyedari sememangnya menyokong apa yang dipanggil pendaftaran serentak, di mana kita akan menyokong petisyen kepada Lembaga Iklan dan dekan bermastautin anda bagi pihak anda jika anda mempunyai konflik di suatu tempat di ini 1:00-2:30 range. Ketua kepada bahawa talian URL untuk butiran tambahan. Tetapi dari segi struktur sokongan yang menyifatkan CS50, pelajar lebih dan kurang selesa sama, kita menawarkan trek yang berbeza bahagian. Dan ini adalah beberapa minggu di luar, tetapi tidak lama lagi, anda akan diminta untuk tahap keselesaan anda. Adakah anda di kalangan mereka yang kurang selesa, lebih selesa, atau di suatu tempat di antara keduanya? Dan kita akan mempunyai tiga berbeza trek yang memenuhi tepat orang-orang penonton. Jadi pada tiada titik dalam jangka sekiranya anda walaupun berasa seperti anda sedang bersaing terhadap mana-mana pelajar yang lebih atau latar belakang kurang daripada anda. Malah, kursus ini bertujuan untuk menjadi lebih banyak kerjasama dan lebih terbuka daripada itu. Dari segi set masalah, anda akan mencari, juga, bahawa di samping edisi standard masalah setiap minggu ditetapkan, terdapat sering "penggodam edisi "yang bertujuan untuk disasarkan pada 5% kepada 10% atau lebih daripada demografi yang sememangnya di kalangan mereka lebih selesa dan ingin lebih daripada cabaran daripada standard edisi pset yang menjangka. Maklumat lanjut mengenai orang-orang untuk menjadi yang terdapat dalam sukatan pelajaran. Tetapi juga di sana boleh didapati butir-butir pada kursus-kursus hari lewat. Biasanya masalah menetapkan adalah disebabkan pada hari Khamis. Walau bagaimanapun, anda boleh melanjutkan banyak anda tarikh akhir ini jatuh dari Khamis untuk Jumaat hanya dengan memenuhi kita separuh jalan, jadi untuk bercakap, menjawab beberapa memanaskan badan soalan di dalam beberapa masalah minggu ini set, yang akan secara automatik kemudian memberi anda tambahan 24 jam. Kami juga akan jatuh paling rendah anda skor, seperti sukatan pelajaran. Untuk memberi anda rasa apa masalah set - kerana ia sememangnya masalah tentu telah menetapkan bahawa akhirnya menentukan hampir setiap pengalaman pelajar, lebih-lebih lagi daripada ceramah, lebih-lebih lagi daripada bahagian, lebih jadi daripada kebanyakan yang lain aspek kursus. Tahun lepas, misalnya, kita bermula, sebagai kita akan bermula tahun ini, dengan calar. Terutama Jumaat ini, kami akan menggunakan, untuk hanya masa satu hari, grafik bahasa pengaturcaraan, yang mana kita akan mulakan program dengan menarik dan menjatuhkan kepingan teka-teki yang hanya berhimpun secara fizikal jika ia masuk akal untuk berbuat demikian secara logik. Minggu depan, kita akan cepat peralihan kepada C, yang agak lama tetapi sangat kecil dan bahasa yang mudah yang akan membolehkan kita untuk benar-benar pergi 0-60 sepanjang hanya beberapa minggu, dan kemudian parlay kemahiran yang sama dan pengetahuan membina asas pengaturcaraan ke bahasa peringkat tinggi seperti PHP, JavaScript, dan yang lain masih. Tahun lepas, pset ketiga dalam perjalanan ialah kriptografi, satu permohonan domain khusus di mana kami pelajar dicabar untuk melaksanakan apa-apa beberapa rahsia, program-program dengan yang untuk berebut atau menguraikan maklumat, untuk menyulitkan itu. Untuk edisi penggodam, sebaliknya, kami memberikan pelajar hacker fail dari komputer Unix standard yang mengandungi nama pengguna dan kata laluan, kedua yang tidak disulitkan, dan kami mencabar mereka penggodam pelajar untuk menyahsulit, sebaik mereka boleh, mereka kata laluan, yang masih di domain yang sama. Kacau, permainan dengan yang ada daripada anda mungkin biasa. Sekeping forensik, di mana kita minta pelajar untuk memulihkan data yang telah jika tidak dipadam dari digital saya sendiri kad kilat padat kamera, oleh sebenarnya menulis perisian untuk memikirkan, mana adalah sifar dan orang-orang di bahawa kamera digital yang sebelum ini terdiri grafik JPEG? Cabaran macam tahun lepas melibatkan bertulis yang paling cepat ejaan pemeriksa boleh, bersaing terhadap rakan-rakan dan rakan-rakan jika mereka suka. Melaksanakan Huff 'n Puff, program mampatan. Dan kemudian berakhir semester dengan CS50 Kewangan, satu aplikasi berasaskan web dengan yang anda mewujudkan satu laman web seperti Etrade untuk membeli dan menjual saham, jadi untuk bercakap, dengan benar-benar menarik hampir petikan masa nyata Yahoo! Kewangan. Apa yang kita tidak buat tahun lepas adalah satu masalah set yang kekal tetap kegemaran. Jika anda tidak pernah pergi ke shuttle.cs50.net, anda akan melihat pengguna muka sedikit seperti ini. Tetapi dua tahun yang lalu, kelas dilaksanakan, menggunakan Google Maps dan Google Earth plug-in dan sedikit daripada celik dengan memandu di sekitar kampus, supaya Objektif permainan ini adalah, seperti yang anda lihat beberapa muka, adalah untuk memandu di sekitar kampus mencari kakitangan, rakan-rakan pengajaran dan CA, dan apabila anda, meletakkan mereka ke bas ulang-alik anda. Tiada seorang pun daripada mereka benar-benar seolah-olah berada di sini, jadi kita akan memasukkan kod menipu. [Ketawa] DAVID MALAN: Ada kita pergi. Baiklah. Dan di sini kini adalah kakitangan dicampur di seluruh kampus. Dan seperti yang anda boleh lihat, di sebelah kanan sisi skrin, bas ulang-alik mempunyai tempat duduk kosong. Dan objektif adalah untuk menulis kod yang boleh digunakan untuk simulasi memandu dan mengambil dan menurunkan kira penumpang. Yang satu, terlalu, dengan menggunakan bahasa dipanggil JavaScript. Jadi menyedari bahawa program-program seperti yang akan berada di landasan yang sama kita ini tahun, juga. Dari segi, sekarang, sokongan tambahan, kita mempunyai waktu pejabat. Seperti yang anda mungkin telah melihat di rumah anda sendiri dewan makan atau Annenberg, kami akan berada di rumah makan dewan empat malam seminggu - Leverett, Pfoho, Eliot dan Annenberg tahun ini, 20:00-23:00. Dan apa yang kita fikir kita akan lakukan pada tahun ini adalah sesuatu yang sedikit berbeza. Jika anda mendengar rumblings tahun lepas bahawa ia adalah sedikit terlalu tertekan, ini waktu pejabat tahun ini, seperti yang kita akan menggambarkan minggu depan, akan lebih organik, mana semasa ketibaan, anda akan dihantar ke satu meja tertentu mana ahli-ahli kakitangan pelbagai menanti, dan kami akan melakukan perkara-perkara yang lebih organik. Tiada beratur lebih, tidak lebih iPad, tetapi agak mempunyai lebih intim perbualan di sekeliling meja hanya lapan atau lebih pelajar, supaya kita anggaran rasa apa yang sebaliknya akan menjadi kelas yang lebih kecil. Kami menawarkan, serta, perkara-perkara ini kita dipanggil walkthroughs, video difilemkan di terlebih dahulu oleh satu pengajaran kursus ini rakan-rakan, Zamyla, di mana dia berjalan anda melalui masalah minggu ini set, menawarkan tips dan cara untuk cabaran yang menanti di hadapan. Dan sebaliknya, selepas set masalah adalah kerana, pada tahun ini, kami akan juga melepaskan klip sedikit memanggil bedah siasat yang sebenarnya berjalan anda melalui penyelesaian wakil, baik dan buruk, melalui mana anda boleh membuat kesimpulan bagaimana anda boleh mempunyai atau sepatutnya melaksanakan penyelesaian anda sendiri. Dan apa yang kita akan menawarkan untuk kali pertama tahun ini juga, terutamanya bagi pelajar yang memanfaatkan kursus yang lain sumber tetapi tetap berjuang terlalu banyak, tentu semua sendiri akan berpasangan pelajar, kerana sumber membenarkan, dengan tutor supaya anda mempunyai lebih intim peluang daripada dewan makan rumah membolehkan bantuan pada satu-satu. Sekarang gambaran akhir di beberapa satu permainan akhir di sisi. Anda mungkin biasa dengan yang CS50 Hackathon. Nah, datang Disember ini, dari pukul 8:00 PM hingga 7:00 pagi, pada permulaan Tempoh membaca, akan menjadi satu peluang untuk berkumpul dengan rakan-rakan - ini akan menjadi kira-kira 9:00 PM - di mana anda menyelam ke akhir anda pelaksanaan projek ini di samping rakan-rakan, kawan-kawan, dan makanan. Ini akan menjadi kira-kira 01:00, apabila kumpulan pertama makanan tiba. Dan ini adalah kira-kira 4:00 yang tahun tertentu di CS50 Hackathon. Tetapi kemuncak sebenar kursus adalah bertujuan untuk Fair CS50, sebuah kampus di seluruh pameran projek-projek anda sendiri akhir, mana keluarga dan rakan-rakan semua dijemput, sebagai perekrut dan rakan-rakan kami dari industri. Ini, misalnya, adalah satu gambaran tentang Orang 2,000-plus yang telah dihadiri tahun yang lalu. Ungkapan seperti ini adalah bukan luar biasa, dan begitu juga buat anda rakan sekelas menggembirakan dalam perkara-perkara anda telah dicapai. Dan sebenarnya, ke arah itu, kita perlu acara start-of-panjang, juga. Jika perkara seperti ini rayuan kepada anda, atau anda sekurang-kurangnya ingin tahu tentang apa yang ini, tahu bahawa satu tradisi baru tentu dipanggil CS50 teki Day. Dan ini telah dimulakan beberapa daripada tahun yang lalu benar-benar memberi isyarat ke kampus bahawa sains komputer tidak kira-kira pengaturcaraan, dan ia sudah tentu tidak kira-kira memeluk hanya pelajar yang mempunyai pengalaman terdahulu. Ia adalah benar-benar tentang menyelesaikan masalah amnya. Teka-teki dan sebagainya Hari, sejak beberapa lalu tahun sekarang, telah berkembang menjadi yang bagus perkongsian dengan rakan-rakan kami di Facebook, di mana akan ada hebat hadiah dan pizza di seberang sungai di i-makmal Sabtu ini akan datang. Menuju ke URL yang dengan dua atau tiga rakan-rakan jika anda ingin mengambil bahagian dalam tradisi baru ini. Jadi saya ingin meminta anda menyimpan satu perkara dalam fikiran, dan kami mempunyai hanya dua minit klip yang untuk menutup hari ini. 73% adalah nombor untuk diingati. Kek juga akan menanti anda di luar ini gereja yg merupakan salib seperti yang kita menangguhkan hanya dalam beberapa detik-detik, yang merupakan tradisi kursus ini, juga. Tetapi ini adalah petikan utama dari sukatan pelajaran kursus untuk ingat. Apa yang akhirnya perkara-perkara dalam kursus ini tidak begitu banyak di mana anda berakhir berbanding dengan rakan-rakan anda tetapi jika anda, dalam Minggu 12, akhirnya relatif kepada diri dalam Minggu 0. Tetapi melihat bahawa kita akan meninggalkan anda dengan di sini hari ini adalah yang satu ini terakhir di sini oleh Daniel sama kami, yang melakukan video wrdly seketika lalu. Saya tinggalkan anda dengan gambaran ini apa yang akan berlaku. Dan seperti yang kita lakukan ini, jika kita boleh mempunyai CS50 kakitangan dari hadapan bilik untuk datang sehingga ke peringkat untuk cat semua lebih daripada gambaran visual untuk apa yang menanti anda tahun ini - semakin janggal. Kami akan membuat kesimpulan dengan ini di sini pada skrin. [Bermain muzik] DAVID MALAN: Ini adalah CS50. [MUSIC - MATT & KIM, "Tak mengapa"] SPEAKER 1: Saya suka CS50 lebih daripada kucing. SPEAKER 2: Whoaaaa! [Ketawa] DAVID MALAN: Ini, maka, adalah CS50. Kami akan melihat anda pada hari Jumaat. [Tepuk tangan dan bersorak] Pencerita: Pada CS50 yang akan datang, satu di atas pentas demo tidak pergi seperti yang dirancang. DAVID MALAN: Kami ingin mencari Mike Smith dalam buku telefon ini. Nah, apakah naluri anda? Saya mungkin kira-kira melompat ke tengah buku telefon, pandang ke bawah, melihat bahawa Saya di M, dan saya tahu sekarang bahawa Mike Smith tidak ke kiri. Dia mesti ke kanan. Dan sebagainya pada masa ini, kita benar-benar boleh lusuh - pada ketika ini, kita benar-benar boleh pemedih mata - pada ketika ini, kita boleh secara kiasan lusuh buku telefon pada separuh. [Strumming UKELELE]