>> David: Selamat Datang, nama saya David malan dan ini CS50. Dan, ini bukan khas sekolah tinggi ilmu komputer saja. Tentu saja ini merupakan sesuatu yang istimewa sedikit. Dan bukan kerana aku mengajarkannya. itu kerana ini adalah salah satu, kita suka berfikir, orang-program langka yang benar-benar meramas otak anda begitu banyak dan jadual anda sehingga banyak yang pada akhir semester yang anda benar-benar merasa lebih pintar. Jadi, itu yang kurasakan saat aku sendiri ikut kursus ini semula pada tahun 1996. Saya adalah seorang besar kerajaan pada waktu di sini tinggal di Rumah Mather. Dan, I. [Bersorak] Sebagaimana yang lain, lima orang lain di sana. Jadi, saya adalah seorang besar kerajaan pada masa itu. Dan aku adalah seorang besar kerajaan kerana aku selalu menyukai sejarah. Aku suka undang-undang perlembagaan di sekolah tinggi. Maka, aku berangkat pada tahun ini pusat mahasiswa baru melakukan apa yang saya lakukan yang terbaik, melakukan apa yang aku tahu aku suka. Dan aku selalu sedikit geek, aku selalu mengoceh dengan komputer. Tapi, aku sendiri, mungkin ironisnya dalam retrospeksi, aku selalu lihat orang-orang yang mengambil ilmu komputer di SMA saya, teman-teman saya sebagai Geeks nyata. Namun, akhirnya itu, tahun kedua saya mengambil program kecil ini disebut CS50 yang benar-benar telah membuatku takut pergi tahun pertama saya sendiri. Dan aku adalah seorang pembantu pengguna pada masa itu. Jadi, saya pasti sudah memenuhi syarat, sekurang-kurangnya, berada di antara mereka, orang-orang aneh yang saya mengolok-olok di sekolah tinggi. Tapi, saya takut. Ada, itu punya reputasi pada saat itu dan mungkin masih dalam bahagian yang itu, itu adalah program menakutkan. Itu banyak bekerja. Sulit dan belum, itu salah satu hal yang baru, Allahku, kulit jauh lebih buruk daripada gigitannya. Aku mendapati diriku tahun kedua, untuk pertama kalinya, benar-benar termasuk kerja rumah menyenangkan. Dan aku tidak pernah berkata ini hanya untuk Gelanggang kursus ini untuk anda. ini adalah realisasi sebenar bagi saya. Sekarang, saya kira, pada satu titik, aku melampaui batas untuk geekdum benar di mana aku benar-benar digunakan untuk melihat ke depan untuk hari Jumaat malam kerana aku bisa meringkuk di depan MacBook kecilku dan bekerja pada set CS50 masalah itu. Jadi, pada saat itu, saya pikir saya sudah melampaui batas jelas. Dan, tujuan kami dalam kursus ini bukan untuk mematikan semua anda kepada orang itu, tetapi, hanya untuk mengatakan bahawa ada, sesuatu yang kecil yang istimewa tentang kursus ini ilmu sesuatu yang kecil yang istimewa tentang komputer secara umum terutama hari ini. Dan, semakin terbiasa kita semua masuk ke teknologi, mainan yang banyak kita bawa di poket kami yang semuanya adalah komputer. Maksudku, iPhone sebenarnya adalah sebuah komputer melakukan lebih tinggi dari laptop saya masih kuliah. Anda boleh melakukan banyak hal rapi dengan hal-hal ini. Dan sekarang, sebahagian besar dari kita di bilik ini, mungkin hanya menggunakan software orang lain, alat-alat orang lain, penyelesaian orang lain untuk masalah kerana kita pergi ke iTunes, kita men-download beberapa aplikasi dari kedai app dan Walla kita boleh melakukan sesuatu yang benar-benar rapi. Namun, pada akhir semester ini, anda boleh menjadi orang yang melakukan itu penyelesaian masalah. Anda boleh menjadi orang yang menyelesaikan beberapa masalah, bangunan yang app, bahawa perisian, bahawa alat itu, baik, satu hanya menghibur aku, menghibur anda. contohnya, kawalan, berkata, perpustakaan iTunes anda dari apartemen anda dengan jelas sebuah aplikasi yang sudah ada atau anda dapat mencari jadual shuttle lebih mudah misalnya. Jadi sebenarnya, salah satu hal yang pertama yang saya lakukan setelah mengambil CS50 sekali lagi, mungkin di titik Jumaat malam dan Sabtu malam, ada kesempatan pada saat di mana Harvard berlari shuttle bus. Dan, hingga ke hari ini, mereka masih memiliki jadual dicetak. Tapi, ada yang benar-benar tidak bermaksud dalam talian untuk mencari tahu ketika pesawat ulang-alik seterusnya. Sekarang, aku tidak peduli, kerana walaupun aku tinggal di Mather aku tidak di antara mereka yang umumnya memuat ulang-alik. Tapi, saya punya banyak teman di Pfoho misalnya. Dan salah satu dari mereka bertanya kepada saya, saya berfikir pada satu titik. [Bersorak] Oke Pfoho lebih baik daripada Mather rupanya. Jadi, salah satu jenis teman saya membuat saya berfikir mungkin aku boleh menulis sebuah program kecil untuk jenis bantuan teman-teman saya menyemak jadual shuttle. Dan demikianlah lahir anak bernama shuttle canggung, ini adalah sebahagian daripada leksikon yang telah tinggal di sekitar untuk beberapa beberapa tahun sekurang-kurangnya di antara beberapa senior. Pada waktu itu, ini adalah program baris perintah ini sedikit serupa dalam roh untuk Dos. Itu berjalan di lingkungan UNIX. Jadi, tidak terlalu seksi sama sekali. Anda hanya menaip beberapa perintah dan memberitahu anda apabila pengangkutan itu. Well, ini hari ini sedikit lebih canggih. Dan, itu sebenarnya justru mewakili jenis projek yang pelajar di akhir ini saja sampai akhir keputusan oleh istilah. Jadi, ini adalah versi empat, sekitar 15 tahun kemudian, dari Shuttleboy. Sepertinya Google Maps sedang agak lambat di sana. Tapi, bagi anda yang harus keluar dari sini selepas kuliah dan pergi, berkata, dari Memorial Hall dan perlu pergi ke, katakanlah, Quad. Nah, anda boleh berangkat dua minit jika oleh, ini benar-benar tidak bekerja untuk anda hanya belum, atau anda mempunyai pilihan-pilihan lain sebanyak mungkin anda sukai. Dan, akan hadir, kita boleh pitch ini dari CS50, akan kemampuan yang sama dengan SMS. Anda boleh teks Shuttleboy via telefon. Anda menyebut Shuttleboy. nombor telefon CS50 tahun ini, dengan baik, sangat ini telah sedia, 617-BUG-CS50. Jadi, yang akan segera debut. Jadi jangan menyebutnya dulu kerana Aku sudah ditegur untuk, sekarang ini sedang diarahkan ke telefon kepala sistem kami mengajar orang itu. Jadi, anda hanya akan menangkapnya jika anda mempunyai sebarang soalan mengenai jadual pesawat sekarang. Tapi, yang akan segera dilaksanakan. Jadi, hal-hal lain, benar-benar, bahawa kita sendiri menghabiskan musim panas ini di benar-benar dalam persiapan untuk semester ini adalah sejumlah besar masalah lain yang kami ingin menyelesaikan. Sebagai contoh, ada banyak hal turun yang terjadi di kampus ini pada hari tertentu. Dan sebenarnya, dengan kata lain, ada banyak hal keseluruhan terjadi di kampus ini bahawa saya pasti pernah memanfaatkan. Dan, walaupun aku sekarang dipenuhi dengan berapa banyak hal-hal yang terjadi, di kampus, saya masih kelihatan tidak pernah mencari masa. Tapi, Walla, bahkan di sana, kuliah CS50's. Itu di mana anda adalah, jadi ini, ini adalah program kami menulis surat kepada agregat semua kejadian di kampus. Dan ini telah sesuatu yang pelajar lain dalam program yang sama telah mengatasi sendiri. Dan, kami telah bekerja dengan pihak lain di kampus untuk benar-benar membuat hal ini terjadi. Tapi masalahnya untuk CS50 istilah ini adalah bahawa semua program-program ini sedikit kami telah bekerja pada apakah ini atau apakah pertama untuk menggabungkan semua berita Harvard di satu tempat, semua News Google, semua hal-hal ini akan memiliki apa disebut antara muka aplikasi API's, pengaturcaraan. Dan ini hanya suka bicara untuk kemampuan membiarkan orang lain, orang-orang di ruangan ini, benar-benar melakukan sesuatu dengan data yang sama. Jadi, dengan syarat akhir, jika anda memutuskan untuk melaksanakan tugas akhir yang berkaitan dengan berita atau peristiwa atau peta, baik kita, sekurang-kurangnya sebagai kursus, akan membuat semua lebih mudah tahun ini dengan menyediakan anda dengan interface; semacam dari fungsi, sehingga untuk berbicara, perisian yang boleh digunakan dalam projek-projek anda sendiri untuk pergi di atas dan di luar di mana para pelajar, mungkin, telah hilang dalam masa terkini kerana rangka ini belum di tempat bagi mereka. Dan sekali lagi, ini semua bermula, setidaknya untuk saya, sekitar 15 tahun yang lalu melaksanakan Shuttleboy. Saya kemudian diemail temanku Ken di Pfoho. Aku berkata hei bagaimana menurutmu? Adakah ini berguna? Dia dihantar keluar pada senarai Pfoho terbuka dan Walla, bertahun-tahun kemudian aku rupanya masih pemerahan projek ini. Dan hal rapi tentang itu, dan di sinilah juga kursus seperti ini dalam kejuruteraan dan sains komputer, saya pikir, sedikit istimewa, adalah bahawa, apabila anda melakukan kerja rumah anda dan ketika anda melakukan kerja anda dalam kursus ini, anda tahu, banyak dari mereka, ya, anda akan mengesampingkan dan tidak benar-benar menggunakan. Namun, sebahagian, anda akan. Dan ada hal yang sangat kuat, setidaknya untuk saya, hal yang sangat menarik, apabila anda membuat sesuatu dan orang lain benar-benar peduli, orang lain tidak hanya tersenyum dan menepuk mengurutkan di bahagian belakang dan kemudian menjalani kehidupan mereka sendiri. Mereka benar-benar menggunakan apa yang anda lakukan dalam hidup masing-masing walaupun itu untuk sesuatu yang konyol atau sesederhana hanya mencari ketika mereka boleh keluar dari sini untuk mengejar pesawat seterusnya ke Quad. Jadi, dengan istilah akhir, itulah salah satu tujuan program ini, untuk memberdayakan kamu hanya mengenalpasti beberapa masalah apakah itu di kampus atau mudah-mudahan baik di luar kampus, dan benar-benar menggunakan kemampuan anda sendiri, fikiran anda sendiri dan menyelesaikan masalah yang dalam beberapa bahagian, teknologi. Jadi, ini juga merupakan program seperti yang kita katakan dalam silabus dan keterangan rasmi program pengajian yang mengajar anda cara berfikir dan mengajar anda bagaimana untuk menyelesaikan masalah yang lebih efisien. Nah, apa artinya? Yah, kalau kau punya 600 megahertz di saku baju atau tiga gigahertz bawah meja anda di rumah, anda boleh menyelesaikan banyak masalah secara berkesan hanya dengan kekerasan luncurkan. Tapi, ada banyak masalah di dunia ini, apakah itu akan mencari, berkata, rangkaian Facebook atau internet melalui Google, bahawa tidak peduli seberapa cepat komputer tertentu anda, tidak ada cara di neraka kau akan mencari milyaran halaman web yang mudah, kecuali jika anda benar-benar pendekatan masalah ini secara cerdas. Anda tidak hanya mencari, contohnya, pendaftaran besar dari semua laman web pada bumi dari atas ke bawah mencari sesuatu yang berkaitan dengan istilah carian apa yang anda cari Google mudah-mudahan Google dan mungkin dan Facebook dan salah satu syarikat besar memiliki banyak orang pintar memikirkan bagaimana mereka dapat mencari data yang lebih cepat, bagaimana mereka dapat memproses maklumat lebih efisien, dan, bagaimana mereka boleh umumnya memberikan hasil lebih cepat sehingga anda dapat melakukan lagi, hal-hal yang lebih menarik dengan alat tersebut. Jadi, apa yang kita maksud, walaupun, dengan cara, mengajar orang bagaimana untuk berfikir lebih hati-hati, lebih algorithmically. Well, ini sedikit visual tampaknya selalu pergi lebih baik. Dan, tampaknya menjadi kenangan. Dan Aku bahkan bertanya baru terakhir oleh seorang bekas pelajar, oh yang akan melakukan hal yang buku telefon lagi. Dan aku cukup banyak di tempat memutuskan baik pasti kita akan membina hal buku telefon. Dan dia bertanya kapan anda menyobek dalam setengah benar, aku seperti juga yeah teknikal kami merobek menjadi dua, tetapi tidak di jalan, dengan cara ilmu komputer saya akan bisa merobek dua perkara. Jadi, di sini adalah masalah yang kita dihidangkan untuk beberapa waktu. Jadi, inilah buku telefon. It's got setidaknya seribu atau lebih halaman. Dan tujuan mudah di tangan dunia yang sangat nyata adalah mencari, katakanlah, seseorang di sini. Jadi, Mike Smith, nama terkini bermula dengan S. Jadi, saya seorang manusia biasa, saya mengambil buku telefon. Dan orang di luar sana, apa yang akan anda, orang yang khas, lakukan untuk mula mencari Mike Smith, jelas tidak mengetahui dahulu apa laman ia sebenarnya dalam. Benar, supaya anda pergi kira-kira di tengah, kanan. Dan pada saat ini dalam cerita itu, aku mungkin di N atau M, anda tahu jalan, kira-kira setengah melalui buku telefon. Ternyata, terakhir kali aku contoh ini saya bisa menemukan diri di bahagian pendamping. Jadi, itu sebenarnya tidak seimbang antara A melalui M dan N melalui Z. Tapi, hari ini, kita, pada kenyataannya, di M's, baik begitu, sekarang aku di M's. Tapi apa Takeaway saya sekarang hanya sebagai manusia biasa jalan? Mana aku harus pergi berikutnya untuk Mike Smith. [Terdengar] Dan demikian, hanya mungkin pada setengah ini, benar, kerana S datang selepas M. Jadi, di sinilah letak drama visual. Itu tidak benar-benar robek menjadi dua, kanan. Aku agak curang ke pusat. Tapi, kita sekarang tahu bahawa Mike setidaknya dalam setengah itu. Kami benar-benar dapat membuang setengah dari masalah itu. Dan aku pergi dengan masalah yang fundamental masih hal yang sama, termasuk Mike Smith dalam sebuah buku yang sangat besar. Tapi, masalahnya sekarang setengah besar. Kalau seribu halaman sebelumnya, sekarang punya 500. Kau tahu apa, aku bisa melakukan hal yang sama lagi. Aku bisa jenis rekursif atau berkali-kali melakukan hal yang sama. Sekarang aku tidak cukup di S. Aku di T. Jadi, oh aku pergi terlalu jauh. Tapi, saya tahu sekarang bahawa Mike tidak ke kanan, akan ada suatu hari nanti ada beberapa kelas di mana aku tidak boleh robek hal bendungan, aku yakin. Tapi sekarang, aku tahu dia tidak ke kanan. Jadi, sekarang masalah telah dicincang. Jadi, saya sudah pergi dari seribu ke 500-250 halaman. Dan lagi, jika anda meneruskan logik, meneruskan matematik, aku memotong masalah ini di setengah, setengah, setengah sampai akhirnya aku juga akan tidak menjumpai Smith sama sekali, tidak mungkin, atau aku akan mencari yang saya cari. Tapi, itu, kemudian, menimbulkan pertanyaan, apakah ini lebih baik berbanding dengan pendekatan mudah hanya mengatakan, anda tahu, A, nope, B, tidak ada, bermula dari kiri ke kanan akan linier melalui buku? Well, secara naluriah ya. Ini akan jauh lebih cepat. Tapi, berapa banyak? Well, kalau aku punya buku seribu halaman telefon atau katakanlah 1.024 bagi anda yang menyukai kekuatan dari dua, berapa banyak masa mungkin saya perlu membahagikan masalah ini dalam setengah sebelum menemui Mr Smith? >> Sepuluh. >> David: Jadi, sepuluh, benar. Jika anda mempunyai 1.024 halaman dan anda membaginya menjadi dua, separuh, setengah, setengah, saya melakukannya sepuluh kali yang bermaksud aku pergi dari 1,000 laman kepada orang yang aku cari di halaman ternyata hanya sepuluh. Dan yang agak rapi, tapi, anda tahu, jika anda berfikir tentang hal ini anda telah melakukan hal ini sepanjang hidup anda. Ini bukan yang dramatik. Tapi sekarang, bahawa buku ini tidak hanya untuk Boston, itu untuk turun AS atau seluruh dunia dan hal ini mempunyai milyaran halaman, jadi bayangkan sebuah buku telefon dengan empat bilion halaman. Berapa banyak membalik halaman yang akan saya lakukan secara maksimum untuk mencari Mike Smith dalam buku telefon empat bilion laman? >> Log base dua. >> David: Jadi ya, jika anda jenis jenis matematik ini adalah log base dua. Tapi, jika anda berfikir 4-2000000000 to satu bilion, sehingga setengah bilion dolar. Maksudku, yang benar-benar berjalan whittles sendiri turun pretty darn segera. Bahkan dengan 32 halvings dari buku telefon bahkan daripada empat bilion, aku akan turun untuk satu laman. Dan saat itulah hal ini mendapat kuat, saya pikir. Saat itulah idea-idea ini boleh menarik apabila anda boleh memiliki masalah empat bilion laman dan dalam 32 langkah anda dapat mencari orang yang anda cari. Dan, itulah yang kita maksud ketika kita mengatakan bahawa anda akan mempelajari cara berfikir lebih hati-hati, lebih algorithmically, lebih cerdas tentang penyelesaian masalah. Dan kembali sangat besar bila anda benar-benar dapat melakukan ini, dan sekali lagi, ini titik googles dari dunia Facebooks yang memiliki kemewahan memiliki dataset besar. Anda harus pendekatan masalah ini dengan cara ini dinyatakan itu benar-benar tidak akan berjaya. Nah, apa apa sebenarnya ingat pelajar? Aku, kami ingin melakukan hal-hal yang sedikit konyol kadang-kadang untuk semacam menghilangkan kegembiraan dari apa yang dinyatakan banyak bahan baru. Jadi, dia benar-benar, bekas pelajar ini dihantar saya link ini yang saya pergi ke depan, hanya untuk menendang dan kemudian menyesal di akhir, berhenti di utube sini. Jadi, saya fikir saya akan berkongsi apa yang seorang saintis non-komputer bermaksud ketika dia menangis di setengah buku telefon. [Tertawa] [Diam] [Tak terdengar] >> Kau tahu lebih dari 200 halaman, garis bersih bagus, sah air mata. [Tertawa] >> David: Jadi, saya kira, cara dia bekerja terlalu. Jadi, apa yang saya dapatkan dari kursus ini bertahun-tahun yang lalu adalah ya, Shuttleboy, dan kemudian ya gelaran dalam ilmu komputer, dan kemudian ya sebuah PHD dalam ilmu komputer. Dan bukan itu yang kami berusaha untuk menukar sebahagian besar pelajar di program ini ke dalam. Sebahagian besar daripada anda pada kursus ini tidak akan mengikuti program utama dalam ilmu komputer. Beberapa dari anda mungkin kecil, tetapi bagi sebahagian dari anda ini akan menjadi program terminal. Dan itu baik-baik saja kerana program ini adalah, pada kenyataannya, berstruktur dengan cara di mana bahkan jika anda hanya membayar yuran anda selama beberapa bulan dan anda benar-benar pakar dalam dan anda benar-benar memuat banyak dari program ini seperti yang anda boleh, anda akan, dalam bahkan, akan dilengkapi dengan baik untuk kembali ke dunia anda ekonomi, biologi, psikologi, gunaan matematik, dan benar-benar memanfaatkan apa yang akhirnya sebagai program yang menarik sebagai kami berharap dapat konseptual kerana fundamental praktikal. Dan itu juga adalah sesuatu yang mungkin agak jarang dijumpai. Saya pikir saya mau berbagi beberapa komen bahawa pelajar dari musim gugur yang lalu dimasukkan ke dalam panduan ini isyarat tahun terakhir ketika ditanya tentang apa yang anda akan ingin memberitahu para calon mahasiswa. Nah, jika anda belum melihat ulasan ini, seorang pelajar berkata program ini akan memakan masa yang lumayan masa anda up. tetapi, jika anda memasukkan karya anda ke seluruh dunia baru, secara keseluruhan, jika anda meletakkan pekerjaan, jika anda menempatkan pekerjaan ke dalam, baik-baik saja, jadi ini adalah tata bahasa nya bukan milikku, jadi jika anda meletakkan, dimasukkan ke dalam bekerja, seluruh dunia baru akan terbuka kepada anda. Amazing betapa aku pelajari hanya dalam 12 minggu. Seorang murid lain menulis, anda lebih baik mengambil ini atau anda akan menyesalinya. Lain menulis, sedikit lebih terus terang, ia akan menendang pantat anda dan membuat anda merasa besar. Dan akhirnya, yang satu ini mungkin sesuatu yang saya hanya boleh memaparkan secara bertulis, namun, kedua-dua dari bawah sini. [Tertawa] Jadi, saya tidak yakin jika anda mempunyai banyak teman yang ikut kursus ini, tetapi kita semacam melakukan banyak kerosakan untuk mahasiswa tahun lalu. Kami diperkenalkan, di awal, beberapa kuliah, seorang beberapa kuis, masalah beberapa set, ini idea lolcats. Anda tidak dapat melihat apa yang saya boleh lihat di sini, tapi sebentar lagi anda akan melihat seorang pemuda bernama kucing bahagia yang merupakan pemimpin Lolcat disebut. Ini adalah salah satu pemain depan internet bodoh yang terus terang saya pikir dikotomi antara kedua-dua lelaki di sini dan apa yang sekarang kita miliki pada paparan mungkin. [Tertawa] Salah satu kegunaan yang paling tidak sesuai teater ini sampai saat ini. Dan, kenapa tidak kita membuat sedikit lebih nyata yang lebih peribadi sedikit idea ini benar-benar menyelesaikan masalah yang lebih efisien. Masalah sederhana pada satu hari setiap sekolah untuk duduk atau berdiri dan mula mengira para pelajar, absen kanan macam. Nah, pendekatan yang paling naif tapi tetap saja, amat benar bahawa guru boleh turun adalah satu, dua, tiga, empat, lima, enam, tujuh, dan kami akan berada di sini beberapa waktu. Jadi, apa yang merupakan peningkatan marjinal ini bahkan bahawa anda mungkin telah dilakukan sebagai anak-anak? Bagaimana anda mengira orang lebih cepat? Dan, jangan mula membaca Arahan dari saya sendiri? Apa yang akan anda lakukan sebagai anak-anak? Mulai menghitung berpasangan, ke kanan, seperti jadi aku cukup bagus di dua, empat, enam, lapan, sepuluh, 12. Jadi, itu adalah sesuatu yang benar menarik. Jadi, berapa banyak perbaikan adalah bahawa di sana? Jadi, ini jelas merupakan faktor dari dua. Butuh waktu setengah banyak masa. Tapi, anda tahu apa, kerana kami akan menyediakan semua semester ini, masalah besar, seperti mempercepat masa anda berjalan hanya dengan dua faktor ini tidak begitu menarik kerana analog di sini di dunia komputer adalah bahawa aku CPU aku komputer, baik heck, jika aku hanya menunggu 12 bulan, 18 bulan, aku komputer hanya akan dapat secara semulajadi, dengan jumlah gigahertz saya dalam diriku untuk dapat menghitung orang-orang di ruangan ini lebih cepat. Jadi, ini macam, jenis ini speedups linier seperti faktor dari dua faktor tiga, bahkan sepuluh kali ganda, siapa yang peduli? Benar, kita dapat melemparkan masalah hardware. Kita boleh menunggu hal-hal yang keluar. Kita bisa mengembangkan mesin lebih cepat. Tapi, intelektual, ya yang semacam cerdas tetapi tidak benar-benar mendasar menukar masalah. Aku masih akan dari kiri ke kanan, depan ke belakang. Ini benar-benar algoritma yang sama. Tapi, saya menawarkan bahawa kita boleh berbuat lebih baik. Kita boleh melakukan lebih pintar dari ini dan mendasar merupakan pelaksanaan lebih cepat. Tapi, untuk menunjukkan ini, kita perlu untuk humor kami sesaat. Dan pada saat ini di mana ia akan aku berbicara kurang dan anda berbicara lebih. Tapi aku butuh kau untuk menjalankan langkah pertama bersama-sama, yang jika anda akan humor kami, sila berdiri. Penggunaan di papan, yang anda kenal sedang, oke, beberapa anda harus duduk. Sesungguhnya orang-orang di belakang, di sana kita pergi, baik-baik saja. Terima kasih. Jadi, program di sini adalah sebelum anda. Anda sekarang komputer melaksanakan program ini. Ini jelas cukup diri pada saat ini. Ya, anda harus menjadi nombor satu. Mendapatkannya? Benar, banyak di antara anda mungkin berfikir ini sudah tetap, tahun pertama pertama. Jadi, berfikir untuk diri sendiri, anda nombor satu. Jadi, langkah ketiga di sini, berpasangan dengan berdiri seseorang, anda menambah dua nombor bersama dan mengadopsi jumlah yang sebagai nombor baru anda dan kami akan melakukan pemeriksaan kesihatan jiwa. [Suara dari] kerumunan Adakah anda tahu berapa banyak yang kita miliki? >> [] Tak terdengar >> Tidak terdengar] [. >> Kita perlu mempunyai kunci jawaban. [Diam] >> Yeah. [Suara dari] orang ramai >> Daud: Pada titik ini, algoritma harus mereda. [Suara dari] orang-orang Mungkin kita harus pergi dengan pendekatan saya setelah semua. >> 43. >> 163. >> David: Ooh geometri di depan 300 orang ditambah. [Tertawa] Apa pengiraan akhir kita akan? >> 180. [Tertawa] >> 1,200. >> 386. >> Daud: 386, dan anda yang berdiri diubah? Apakah semua orang bahawa? Adakah anda tahu jawapannya? >> Apa? >> Daud: Adakah anda tahu apa jawapannya? Kami tidak membawa kunci jawaban dengan kami sehingga, 386 sebenarnya justru jawapan yang tepat untuk pertama kalinya. [Bersorak] [Tepuk tangan] Tidak apa-apa. [Tepuk tangan] Sangat, sangat manis. Jadi, apa yang Takeaway kerana yang pasti merasa sedikit lebih lambat dari pendekatan saya sangat mudah, tetapi tetap amat benar hanya akan onesies dan twosies dan hanya mendapatkan hal itu dilakukan dengan dari kiri ke kanan. Tapi, apa kita benar-benar hanya lakukan di sana? Nah, jika ada kasar, katakanlah, 400 dari kau berdiri pada satu titik, dan kemudian setengah dari anda, sangat cepat, dari apa yang aku tahu, ingin duduk. Jadi, setengah daripada anda duduk, kami pergi 400-200 lalu ke 100 lalu ke 50 kemudian ke 25. Jadi sekali lagi, ada yang membagi idea yang sama dan menawan kami dengan buku telefon. Sekali lagi, dengan iterasi setiap kita dibelah dua ukuran dari masalah, kita dibelah dua itu, kita dibelah dua itu. Jadi, secara teori, algoritma anda harus sudah lebih cepat daripada pendekatan pendekatan linier saya kerana saya akan mengatakan telah mengambil 400 langkah atau mungkin kalau aku sedikit pintar 200 langkah. Tapi, anda pasti sudah diambil jauh lebih sedikit, ke kanan 400-200, 100, 50, 25, 13, enam, jadi kurang dari sepuluh langkah di akhir versus saya 200 atau 400. Dan ada benih idea yang sangat menarik. Dan ya, secara matematik apa yang baru saja anda lakukan adalah sesuatu yang sedikit logaritma di alam dengan dasar masuk dua, kami dibagi dalam dua dan dua lagi. Dan kita akan kembali nanti di semester ini. Namun di situlah letak lagi pelaksanaan yang sangat cerdas. Dan, kita hanya menggaruk permukaan pendekatan yang sangat pintar cekap sangat cerdas untuk masalah yang kita akhirnya bisa menyelesaikan. Jadi, yang adalah orang-orang anda hanya berbual dengan jika sebentar? Sebuah keprihatinan bersama dalam suatu kursus seperti ini adalah bahawa semua orang di sebelah kiri anda dan semua orang di sebelah kanan anda jelas harus tahu lebih banyak daripada anda. Yah, itu benar-benar tidak terjadi. Dan pada kenyataannya, dalam beberapa tahun terakhir, program ini telah melakukan usaha bersepadu untuk menjangkau mereka yang kurang nyaman, sehingga untuk berbicara. Dan dengan itu, kita bererti tidak orang-orang yang belum pernah menyentuh komputer sebelum kerana itu benar-benar sukar untuk mencari di sini hari ini, tetapi orang-orang yang menggunakan email, dengan menggunakan Facebook, bahkan mungkin sekarang tetapi tidak pasti apa yang harus dilakukan ketika sesuatu yang salah atau ketika mereka ditanya tentang apa-apa teknologi, anda tahu, tangan naik atau jenis hardware push ke teman yang mungkin lebih berpengalaman dalam hal itu daripada mereka. Well, ini adalah beberapa statistik dari semester tahun lalu. Jadi, ketika ditanya, ketika kami bertanya kami sehingga pelajar 400 tahun lalu, anda tahu, apa tahap keselesaan anda masuk ke kelas ini, juga menulis sendiri 34% ke bawah seperti di antara mereka yang kurang selesa. Jadi, jika anda telah datang ke bilik ini dan masih lagi berfikir sekarang, bahawa, anda tahu apa, istilah ini kurang nyaman menggambarkan saya, tahu bahawa anda berada dalam syarikat yang sangat baik. Tapi, menyedari juga bahawa, jika anda datang dalam kursus ini dengan latar belakang ilmu komputer dan anda benar-benar bahawa geek di sekolah menengah dan sekolah tinggi yang sedang menulis kod dan dirimu pengajaran bahasa, baik itu juga boleh kerana ada pasti trivial saiz penonton dengan latar belakang itu juga, sekitar 13%, semester lalu. Dan kemudian, ada orang-orang lain, semacam orang yang tidak berfikir bahawa mereka kurang selesa, mereka pasti tidak berfikir bahawa mereka lebih selesa tetapi mereka hanya dalam kursus untuk mendapatkan sesuatu dari itu. Jadi, tentu saja menyedari hal ini cukup menarik spektrum pelajar. Dan, untuk menempatkan ini dalam istilah yang lebih konkrit, 71% daripada pelajar, tahun lalu, telah sifar kursus di belakang mereka. Jadi, jika anda memasuki oh tentu saja berfikir semua orang yang mengambil CS50 adalah ahli ilmu komputer di sekolah tinggi, itu tidak terjadi. Kebanyakan orang mungkin hanya tertarik di dalamnya. Dan beberapa, ya, benar-benar telah mengambil beberapa program, beberapa, atau sekurang-kurangnya satu orang tahun lalu telah mengambil lima program sebelumnya. Jadi, kita pasti mempunyai beberapa outlier tapi sekali lagi daging kurva berada dalam nilai-nilai yang lebih rendah sama sekali. Dan statistik lain yang menarik kami bersama-sama selama beberapa tahun terakhir adalah nisbah gender. Jadi, secara historis, paling tidak dalam ilmu komputer, ada sedikit condong perempuan laki-laki. Aku beberapa tahun yang lalu itu jauh lebih jelas berbanding tahun lalu. Jadi, kita sudah hampir sekarang pada tahap 40%. Dan jika saya boleh mengemukakan cabaran hanya demi memiliki pie chart ketiga tahun depan, yang lebih adil. Saya akan menunjukkan bahawa sama sekali tidak ada alasan dari perspektif program pengajian yang laki-laki dan perempuan tidak boleh mendaftar di semacam ini tentu saja. Dalam jumlah yang relatif sama dan menyedari menjadi 38 peratus, 48 peratus, kita sebenarnya cukup senang melihat bahawa kita hampir pada saat itu, sekurang-kurangnya, bahkan statistik nilai sebanyak 50%. Jadi, jika anda, pada kenyataannya, wanita, melakukan sisanya memastikan juga bahawa ini tidak, pada kenyataannya, kelas yang didominasi laki-laki. Well, ini hanya berlaku sehingga menjadi ulang tahun 20 CS50's. Aku, juga terima kasih. [Bersorak] [Tepuk tangan] Itu sangat baik dari anda kerana kami membawa kue untuk anda sebenarnya. Jadi, apabila anda keluar dari sini hari ini, anda benar-benar akan mendapatkan kesempatan untuk bertemu banyak rakan-rakan yang mengajar program akan berlama-lama di lorong. Dan ya itu akan menjadi semacam insentif baik cara pertemuan fellows mengajar. Tapi, kita melakukan perjalanan ke sebuah kedai roti kecil dan lagi konsisten dengan kursus adalah sifat jenaka sementara tetap mengharapkan jumlah trivial kerja sementara kita bersenang-senang itu. Tapi, kami mempunyai salah satu kuih untuk anda. [Tertawa] Jadi, jika anda tertawa itu benar-benar baik kerana bahkan jika anda salah satu di antara mereka yang kurang selesa sekurang-kurangnya kau menyedari hal itu. Sesungguhnya orang-orang dalam 14 peratus mungkin lebih suka rasa ini. [Tertawa] Kemudian, jika anda tidak tahu apa yang sedang berlaku sekarang, kita juga mempunyai ini untuk kamu semua. [Bersorak] ] Tepuk tangan [Jadi, yang sedang dipotong-potong menjadi potongan-potongan luar saat kita bicara. Jadi sekali lagi, mari kita hal-hal yang membuat takik least memperkenalkan beberapa penyewa asas yang kita kemudian akan mengambil untuk diberikan dalam sisa semester ini. Jadi, kita semua mungkin tahu bahawa komputer akhirnya memendekkan entah bagaimana sifar dan yang, hal-hal yang disebut bit. Apa artinya? Nah anda dapat memikirkan itu terus terang sebagai sebuah bola lampu, sedikit adalah bola lampu yang baik di atau batal. Ini sebuah butang, itu baik di atau batal. Sekarang, saintis komputer umumnya menganggap turun sebagai nombor sifar dan sewenang-wenangnya, dan idea sebagai satu. Jadi, jika anda melempar sebuah butang lampu pada satu mematikkannya itu sifar. Atau, dengan kata lain, putar lampu pada yang nilai gilirannya benar itu dari yang nilai palsu. Jadi, ini hanya sinonim. Pada akhir hari, ya, perhitungan semua, semua hal yang terjadi di bawah kap dalam komputer tidak akhirnya panas ke sifar dan yang. Dan, apabila anda berhenti untuk berfikir tentang hal ini, it's pretty bendungan luar biasa apa yang telah dilakukan dunia dengan blok bangunan asas termasuk beberapa peranti anda memegang di tangan anda. Nah, kenapa sifar dan yang berguna? Ya Tuhan, bahkan di dunia nyata kita sekurang-kurangnya mempunyai sepuluh digit, sifar sampai sembilan. Mengapa begitu terhad? Baik dalam hal hardware itu sangat mudah. Ini jauh lebih mudah untuk mewakili dua negara, benar. Jika komputer yang dipasang ke dinding, biasanya, anda mempunyai sumber alam dengan binari. It's on atau off. Kuasa mengalir atau tidak. Jadi, itu semacam salah satu alasan awal bahawa dunia pergi hanya dengan sifar dan yang ada di komputer. Tapi, anda boleh menggunakannya sebagai blok bangunan. Jadi, ini sebenarnya sedikit pada paparan kecil di sini tapi kita boleh mengira dalam binari atau kita boleh mewakili apa yang kita inginkan dalam binari seperti yang kita dapat, contohnya, perpuluhan, seperti kita boleh, bahkan pada kenyataannya, dengan huruf abjad. Jadi, inilah sistem cepat. Hanya dalam masa beberapa minit sekarang anda akan tahu bagaimana cara menghitung, bagaimana menulis, bagaimana berbicara binari seperti laptop anda sendiri. Nah, anda miliki, dalam dunia biner, semacam seperti medan sekolah dasar atau nilai-nilai. Jadi, di sekolah dasar kita belajar ini adalah yang medan ini adalah medan puluhan, ratusan medan dan sebagainya. Dengan kata lain, mengapa jumlah yang kita kenal sebagai 123 nombor 123? Well, guru saya mengajar saya ini adalah yang medan, ini adalah puluhan, ini adalah ratusan. Nah apa artinya? Nah, untuk mencari tahu apa nilai total dari apa yang dinyatakan string digit, hanya hash tanda di papan tulis. Yah, kita memiliki satu 100, jadi itu 1 kali 100 dan kemudian ditambah apa dua 10 begitu itu yang 2 kali 10 dan ditambah lagi tiga, jadi itu 3 kali 1, oke, jadi aku sepertinya mendapatkan kembali ke tempat saya mulai. Namun, proses ini sangat mudah hanya mengalikan angka dengan nilai dari medan adalah apa yang binari adalah semua tentang. Tapi, dalam binari anda menggunakan kekuatan dari dua tidak kekuatan sepuluh. Jadi, inilah serangkaian lapan bola lampu. Komputer saintis hendak menggunakan nilai seperti dua dan lapan dan 16 dan 24 dan 32 kerana mereka semua nilai umumnya nyaman digunakan. Jadi, ketika kita berbicara tentang lapan nilai dalam susunan ini adalah seperti disebut bait. Dan hari ini kita jarang bercakap dalam bait saja, kita berbicara Mb gigabyte dan terabyte hari ini. Tapi semua akhirnya hal yang sama. Berikut adalah lapan bit AKA satu bait, hanya jargon mudah. Jadi, semua lampu mati. Jadi, matematik itu sebenarnya sangat mudah. Jadi ada di sebelah kanan, walaupun itu kecil untuk melihat, adalah medan seseorang, berpasangan, yang merangkak, yang lapan, yang 16S, 32s, 64s, 128s. Baiklah, mungkin sukar untuk menghafal pada awalnya, tetapi itu hanya dikalikan dua dari kanan ke kiri. Jadi, anda sentiasa boleh menciptakan ini. Yah, mereka semua ini jadi itulah 0 kali placeholder, 0 kali placeholder. Jadi, ini adalah nombor 0 direpresentasikan dalam binari. Dengan kata lain, bagaimana anda menulis nombor yang kita kenal sebagai 0 dalam binari? Well, satu, dua, tiga, empat, lima, enam, tujuh, lapan, dan secara teknikal seperti di perpuluhan, semua sifar terkemuka, mereka tidak menambah sesuatu formula mereka hanya ada kerana kita sewenang-wenangnya memutuskan kami ingin lapan hal ini berturut-turut, benar. Kalau mereka benda-benda fizikal, kita mempunyai lapan sehingga mereka harus semua pergi. Jadi, kita boleh baru saja terlepas dari satu sifar. Nah bagaimana anda mewakili nombor satu? Yah, secara naluri anda akan membuang salah satu switch. Kau akan mengubah bola lampu di. Jadi, ada user yang pertama kerana kita sekarang menempatkan satu, bola lampu yang ada di dalam kedudukan seseorang. Bagaimana kita akan mewakili dua? Yah, kita benar-benar akan melemparkan dua switch sekarang setidaknya versus negara bahagian ini, kita harus mengaktifkan dua medan yang mematikan yang medan dan sekarang kami mempunyai nilai pertama dalam medan berpasangan. Jadi, itu jumlah keseluruhan nilai dua. Sekarang, latihan mental cepat; apa yang akan terjadi dengan urutan seterusnya? Bagaimana saya mempresentasikan nombor tiga? Yah, aku butuh satu daripada medan berpasangan, salah satu dari medan bertiga dan ha ah. Jadi, sekarang aku bertambah satu. Dan sekarang, ini mengulangi pola asas yang sama. Apa nombor empat? Yah mari kita lihat, aku hanya perlu satu di lajur merangkak dan kemudian sifar dalam berpasangan dan yang. Jadi, terus seperti itu. Dan, itu hanya urutan langkah. Dan dalam pengertian binari benar-benar tidak begitu rumit. Di atas sana kita mempunyai lapan sifar. Di bawah ini bahawa kita memiliki tujuh sifar dan satu. Di bawah ini bahawa kita mempunyai enam angka sifar, satu, dan sifar dan itu binari. Sekarang, untungnya, kami saintis komputer, kita programmer dengan syarat akhir tidak akan sering menulis dalam binari, bertutur dalam binari, berfikir dalam binari kerana kami telah membina banyak lapisan traksi di atas itu. Bahkan, jarang orang berbicara tentang bit kecuali dalam konteks rangkaian mereka berbicara tentang bait kerana sedikit pun, tidak berguna, lapan bit hari ini masih tidak berguna, tapi sekurang-kurangnya lapan bit, satu bait paling tidak mendapatkan kita ke arah lebih bermanfaat unit pengukuran. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. Tapi itu seperti yang belum jelas. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. Baik. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Disember untuk perpuluhan. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Modal A. Dan jumlah 97? A. huruf kecil Baiklah. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Benar. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [Tertawa] >> Seventy Nine. >> David: Can someone second that? Yes. Baik. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. Baik. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [Musik] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [Tepuk tangan] ==== Transcribed by Automatic Sync Technologies ====